From: Marco Costalba Date: Wed, 14 Oct 2009 08:18:16 +0000 (+0100) Subject: Do not prune the move if we are still under mate X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=c1ea5ed6f7204afd6cb03a80ca8d124bd82cc40d;hp=53f882ff1a95d444dd9b3cd0eb39d493d0e6280e Do not prune the move if we are still under mate If after the first tried 2 + int(depth) moves we still have no any move that takes us out of a mate then do not prune the following move, it is more important to escape mate then speed up search. This fixes an odd behaviour regarding mates, as example the following diagram is a mate in 4, not in 3 as bogusly reported before this patch. 1B2n3/8/2R5/5p2/3kp1n1/4p3/B3K3/8 w - - bm #4; The performance impact should be minimal, the increment in searched nodes is less then 0.1 %% Idea and patch by Joona After 999 games at 1+0 Mod vs Orig +193 =604 -202 -3 ELO Signed-off-by: Marco Costalba --- diff --git a/src/search.cpp b/src/search.cpp index c0b6507c..53811de0 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1369,7 +1369,8 @@ namespace { { // History pruning. See ok_to_prune() definition if ( moveCount >= 2 + int(depth) - && ok_to_prune(pos, move, ss[ply].threatMove, depth)) + && ok_to_prune(pos, move, ss[ply].threatMove, depth) + && bestValue > value_mated_in(PLY_MAX)) continue; // Value based pruning