else
break;
- delta += delta / 4 + 2;
+ delta += delta / 3;
assert(alpha >= -VALUE_INFINITE && beta <= VALUE_INFINITE);
}
&& lmrDepth < 7
&& !ss->inCheck
&& ss->staticEval + 207 + 223 * lmrDepth + PieceValue[EG][pos.piece_on(to_sq(move))]
- + captureHistory[movedPiece][to_sq(move)][type_of(pos.piece_on(to_sq(move)))] * 1078 / 7000 < alpha)
+ + captureHistory[movedPiece][to_sq(move)][type_of(pos.piece_on(to_sq(move)))] / 7 < alpha)
continue;
Bitboard occupied;
lmrDepth = std::max(lmrDepth, 0);
// Prune moves with negative SEE (~4 Elo)
- if (!pos.see_ge(move, Value(-27 * lmrDepth * lmrDepth - 33 * lmrDepth / 2)))
+ if (!pos.see_ge(move, Value(-27 * lmrDepth * lmrDepth - 16 * lmrDepth)))
continue;
}
}
else
{
// Reduce other moves if we have found at least one score improvement (~1 Elo)
+ // Reduce more for depth > 3 and depth < 12 (~1 Elo)
if ( depth > 1
&& beta < 14001
&& value > -12754)
- depth -= 1;
+ depth -= depth > 3 && depth < 12 ? 2 : 1;
assert(depth > 0);
alpha = value; // Update alpha! Always alpha < beta