Don't do InCheck Pruning at the root of QS
authorVoyagerOne <excelgeek@gmail.com>
Sat, 29 Apr 2017 03:40:01 +0000 (20:40 -0700)
committerJoona Kiiski <joona@zoox.com>
Sat, 29 Apr 2017 03:40:45 +0000 (20:40 -0700)
STC:
LLR: 2.96 (-2.94,2.94) [0.00,5.00]
Total: 34603 W: 6441 L: 6167 D: 21995

LTC:
LLR: 2.97 (-2.94,2.94) [0.00,5.00]
Total: 24474 W: 3274 L: 3076 D: 18124

Bench: 5934421

Closes #1089

src/search.cpp

index b4405fcf02845c2033f46aa60ab416d811e18136..ffe724aa10a864d8b3fad173c5a91c5fa9bb7e26 100644 (file)
@@ -879,7 +879,7 @@ moves_loop: // When in check search starts from here
       // (alpha-s, beta-s), and just one fails high on (alpha, beta), then that move
       // is singular and should be extended. To verify this we do a reduced search
       // on all the other moves but the ttMove and if the result is lower than
       // (alpha-s, beta-s), and just one fails high on (alpha, beta), then that move
       // is singular and should be extended. To verify this we do a reduced search
       // on all the other moves but the ttMove and if the result is lower than
-      // ttValue minus a margin then we extend the ttMove.
+      // ttValue minus a margin then we will extend the ttMove.
       if (    singularExtensionNode
           &&  move == ttMove
           &&  pos.legal(move))
       if (    singularExtensionNode
           &&  move == ttMove
           &&  pos.legal(move))
@@ -1283,6 +1283,7 @@ moves_loop: // When in check search starts from here
 
       // Detect non-capture evasions that are candidates to be pruned
       evasionPrunable =    InCheck
 
       // Detect non-capture evasions that are candidates to be pruned
       evasionPrunable =    InCheck
+                       &&  depth != DEPTH_ZERO
                        &&  bestValue > VALUE_MATED_IN_MAX_PLY
                        && !pos.capture(move);
 
                        &&  bestValue > VALUE_MATED_IN_MAX_PLY
                        && !pos.capture(move);