]> git.sesse.net Git - stockfish/commitdiff
Fix easy re-capture case
authorMarco Costalba <mcostalba@gmail.com>
Sat, 2 Mar 2013 12:20:40 +0000 (13:20 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 2 Mar 2013 12:20:40 +0000 (13:20 +0100)
We detect an easy move as a recapture with an
high margin on the second best move.

Unfortunatly the recapture detection is broken
becuase we identify as a recapture any move that
follows an opponent's previous capture !

This patch fix the logic to correctly detect a
real re-capture.

No functional change.

src/search.cpp

index 15f09bc92743de1cc2eab9fcdfabfd76a4cba82b..33fff82deb48a5b402f470c84c05f39eebf8dca8 100644 (file)
@@ -442,11 +442,16 @@ namespace {
             if (Time::now() - SearchTime > (TimeMgr.available_time() * 62) / 100)
                 stop = true;
 
+            bool recapture =   pos.is_capture(RootMoves[0].pv[0])
+                            && pos.captured_piece_type()
+                            && SetupMoves->size()
+                            && to_sq(SetupMoves->back()) == to_sq(RootMoves[0].pv[0]);
+
             // Stop search early if one move seems to be much better than others
             if (    depth >= 12
                 && !stop
                 &&  PVSize == 1
-                && (   (bestMoveNeverChanged &&  pos.captured_piece_type())
+                && (   (bestMoveNeverChanged && recapture)
                     || Time::now() - SearchTime > (TimeMgr.available_time() * 40) / 100))
             {
                 Value rBeta = bestValue - 2 * PawnValueMg;