Do not probe syzygy bases when castling is possible
authorJoona Kiiski <zamar@meripeto.(none)>
Wed, 20 Jan 2016 15:24:21 +0000 (15:24 +0000)
committerJoona Kiiski <joona@zoox.com>
Wed, 20 Jan 2016 15:24:21 +0000 (15:24 +0000)
Almost no functional change. Bench is unchanged.

Resolves #230
Resolves #573

src/search.cpp

index 0ccf326..dc5164e 100644 (file)
@@ -256,8 +256,9 @@ void MainThread::search() {
   }
   else
   {
-      if (TB::Cardinality >=  rootPos.count<ALL_PIECES>(WHITE)
-                            + rootPos.count<ALL_PIECES>(BLACK))
+      if (    TB::Cardinality >=  rootPos.count<ALL_PIECES>(WHITE)
+                                + rootPos.count<ALL_PIECES>(BLACK)
+          && !rootPos.can_castle(ANY_CASTLING))
       {
           // If the current root position is in the tablebases, then RootMoves
           // contains only moves that preserve the draw or the win.
@@ -691,7 +692,8 @@ namespace {
 
         if (    piecesCnt <= TB::Cardinality
             && (piecesCnt <  TB::Cardinality || depth >= TB::ProbeDepth)
-            &&  pos.rule50_count() == 0)
+            &&  pos.rule50_count() == 0
+            && !pos.can_castle(ANY_CASTLING))
         {
             int found, v = Tablebases::probe_wdl(pos, &found);