Don't update refutation table in case of
previous move is MOVE_NULL or MOVE_NONE
and don't try refutation if is already
a killer move.
Pass both short TC
LLR: 2.96 (-2.94,2.94)
Total: 4310 W: 953 L: 869 D: 2488
And long one
LLR: 2.95 (-2.94,2.94)
Total: 6707 W: 1254 L: 1184 D: 4269
bench:
4785954
case KILLERS_S1:
cur = killers;
case KILLERS_S1:
cur = killers;
+ end = cur + 3 - (killers[2].move == killers[0].move || killers[2].move == killers[1].move);
return;
case QUIETS_1_S1:
return;
case QUIETS_1_S1:
// Increase history value of the cut-off move
Value bonus = Value(int(depth) * int(depth));
Hist.update(pos.piece_moved(bestMove), to_sq(bestMove), bonus);
// Increase history value of the cut-off move
Value bonus = Value(int(depth) * int(depth));
Hist.update(pos.piece_moved(bestMove), to_sq(bestMove), bonus);
- Square prevSq = to_sq((ss-1)->currentMove);
- Refutation.update(pos.piece_on(prevSq), prevSq, bestMove);
+ if (is_ok((ss-1)->currentMove))
+ {
+ Square prevSq = to_sq((ss-1)->currentMove);
+ Refutation.update(pos.piece_on(prevSq), prevSq, bestMove);
+ }
// Decrease history of all the other played non-capture moves
for (int i = 0; i < playedMoveCount - 1; i++)
// Decrease history of all the other played non-capture moves
for (int i = 0; i < playedMoveCount - 1; i++)