]> git.sesse.net Git - stockfish/blobdiff - src/search.cpp
Remove useless mate value special handling in null search
[stockfish] / src / search.cpp
index 1d27dad5e3e96ee9b4f431f2bf5f466e3e44dc51..252b4299239e5e039e3bb90a4ba04ed0cef5b49d 100644 (file)
@@ -205,7 +205,7 @@ namespace {
   const bool UseLSNFiltering = true;
   const int LSNTime = 4000; // In milliseconds
   const Value LSNValue = value_from_centipawns(200);
-  bool looseOnTime = false;
+  bool loseOnTime = false;
 
   // Extensions. Array index 0 is used at non-PV nodes, index 1 at PV nodes.
   // There is heavy SMP read access on these arrays
@@ -375,7 +375,7 @@ bool think(const Position& pos, bool infinite, bool ponder, int side_to_move,
   if (button_was_pressed("Clear Hash"))
   {
       TT.clear();
-      looseOnTime = false; // reset at the beginning of a new game
+      loseOnTime = false; // reset at the beginning of a new game
   }
 
   bool PonderingEnabled = get_option_value_bool("Ponder");
@@ -488,17 +488,17 @@ bool think(const Position& pos, bool infinite, bool ponder, int side_to_move,
   // We're ready to start thinking. Call the iterative deepening loop function
   //
   // FIXME we really need to cleanup all this LSN ugliness
-  if (!looseOnTime)
+  if (!loseOnTime)
   {
       Value v = id_loop(pos, searchMoves);
-      looseOnTime = (   UseLSNFiltering
+      loseOnTime = (   UseLSNFiltering
                      && myTime < LSNTime
                      && myIncrement == 0
                      && v < -LSNValue);
   }
   else
   {
-      looseOnTime = false; // reset for next match
+      loseOnTime = false; // reset for next match
       while (SearchStartTime + myTime + 1000 > get_system_time())
           ; // wait here
       id_loop(pos, searchMoves); // to fail gracefully
@@ -1080,7 +1080,7 @@ namespace {
       {
         // Try to reduce non-pv search depth by one ply if move seems not problematic,
         // if the move fails high will be re-searched at full depth.
-        if (    depth >= 2*OnePly
+        if (    depth >= 3*OnePly
             &&  moveCount >= LMRPVMoves
             && !dangerous
             && !moveIsCapture
@@ -1249,11 +1249,7 @@ namespace {
 
         pos.undo_null_move();
 
-        if (value_is_mate(nullValue))
-        {
-            /* Do not return unproven mates */
-        }
-        else if (nullValue >= beta)
+        if (nullValue >= beta)
         {
             if (depth < 6 * OnePly)
                 return beta;
@@ -1364,7 +1360,7 @@ namespace {
 
       // Try to reduce non-pv search depth by one ply if move seems not problematic,
       // if the move fails high will be re-searched at full depth.
-      if (    depth >= 2*OnePly
+      if (    depth >= 3*OnePly
           &&  moveCount >= LMRNonPVMoves
           && !dangerous
           && !moveIsCapture
@@ -1492,7 +1488,6 @@ namespace {
     else if (tte && tte->type() == VALUE_TYPE_EVAL)
     {
         // Use the cached evaluation score if possible
-        assert(tte->value() == evaluate(pos, ei, threadID));
         assert(ei.futilityMargin == Value(0));
 
         staticValue = tte->value();
@@ -2203,16 +2198,19 @@ namespace {
     assert(m != MOVE_NONE);
 
     Depth result = Depth(0);
-    *dangerous = check || singleReply || mateThreat;
+    *dangerous = check | singleReply | mateThreat;
 
-    if (check)
-        result += CheckExtension[pvNode];
+    if (*dangerous)
+    {
+        if (check)
+            result += CheckExtension[pvNode];
 
-    if (singleReply)
-        result += SingleReplyExtension[pvNode];
+        if (singleReply)
+            result += SingleReplyExtension[pvNode];
 
-    if (mateThreat)
-        result += MateThreatExtension[pvNode];
+        if (mateThreat)
+            result += MateThreatExtension[pvNode];
+    }
 
     if (pos.type_of_piece_on(move_from(m)) == PAWN)
     {