From def50020ad0f0c093ae66a2725203a1000931d1a Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Sat, 2 Mar 2013 13:20:40 +0100 Subject: [PATCH] Fix easy re-capture case 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 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/search.cpp b/src/search.cpp index 15f09bc9..33fff82d 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -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; -- 2.39.2