From c1ea5ed6f7204afd6cb03a80ca8d124bd82cc40d Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Wed, 14 Oct 2009 09:18:16 +0100 Subject: [PATCH 1/1] 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 --- src/search.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 -- 2.39.2