Minor bugfixes to refutation table
authorGary Linscott <glinscott@gmail.com>
Mon, 13 May 2013 19:04:18 +0000 (12:04 -0700)
committerMarco Costalba <mcostalba@gmail.com>
Tue, 14 May 2013 21:52:44 +0000 (23:52 +0200)
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

src/movepick.cpp
src/search.cpp

index a604fe14bd72efd81b065e38743914d9b4f154fe..e350bda839b7a073a6775669ee6fac773921d6b4 100644 (file)
@@ -239,7 +239,7 @@ void MovePicker::generate_next() {
 
   case KILLERS_S1:
       cur = killers;
-      end = cur + 3;
+      end = cur + 3 - (killers[2].move == killers[0].move || killers[2].move == killers[1].move);
       return;
 
   case QUIETS_1_S1:
index 40561544ab00a872947d6fef00db1364de71dfaf..2218336775cb8fc58ead6028efd840f60d050c64 100644 (file)
@@ -1092,8 +1092,11 @@ split_point_start: // At split points actual search starts from here
             // 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++)