Use CounterMoveHistory when calculating LMR for cut nodes
authorVoyagerOne <excelgeek@gmail.com>
Sat, 28 Mar 2015 21:15:49 +0000 (21:15 +0000)
committerJoona Kiiski <joona.kiiski@gmail.com>
Sat, 28 Mar 2015 21:15:49 +0000 (21:15 +0000)
If the sum of CounterMoveHistory heuristic and History heuristic is below zero,
then reduce an extra ply in cut nodes

LTC:
LLR: 2.96 (-2.94,2.94) [0.00,6.00]
Total: 6479 W: 1099 L: 967 D: 4413

Bench: 7773299

Resolves #315

src/search.cpp

index 085bca3..c5da0d4 100644 (file)
@@ -964,7 +964,9 @@ moves_loop: // When in check and at SpNode search starts from here
           ss->reduction = reduction<PvNode>(improving, depth, moveCount);
 
           if (   (!PvNode && cutNode)
-              ||  History[pos.piece_on(to_sq(move))][to_sq(move)] < VALUE_ZERO)
+              ||  History[pos.piece_on(to_sq(move))][to_sq(move)] < VALUE_ZERO
+              ||  CounterMovesHistory[pos.piece_on(prevMoveSq)][prevMoveSq][pos.piece_on(to_sq(move))][to_sq(move)]
+                + History[pos.piece_on(to_sq(move))][to_sq(move)] < VALUE_ZERO)
               ss->reduction += ONE_PLY;
 
           if (move == countermoves[0] || move == countermoves[1])