From: Marco Costalba Date: Wed, 20 Jan 2010 10:40:33 +0000 (+0100) Subject: Prune evasions with negative SEE in qsearch X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=81cfd81366cf06dc403476a4782ef34703346c61 Prune evasions with negative SEE in qsearch Only pure blocking evasions are candidate for pruning. After 998 games at 1+0 Mod vs Orig +215 =596 -187 +10 ELO Signed-off-by: Marco Costalba --- diff --git a/src/search.cpp b/src/search.cpp index 7ba64c44..96b84423 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1643,7 +1643,7 @@ namespace { StateInfo st; Move ttMove, move; Value staticValue, bestValue, value, futilityBase, futilityValue; - bool isCheck, enoughMaterial, moveIsCheck; + bool isCheck, enoughMaterial, moveIsCheck, evasionPrunable; const TTEntry* tte = NULL; int moveCount = 0; bool pvNode = (beta - alpha != 1); @@ -1744,8 +1744,15 @@ namespace { } } - // Don't search captures and checks with negative SEE values - if ( !isCheck + // Detect blocking evasions that are candidate to be pruned + evasionPrunable = isCheck + && bestValue != -VALUE_INFINITE + && !pos.move_is_capture(move) + && pos.type_of_piece_on(move_from(move)) != KING + && !pos.can_castle(pos.side_to_move()); + + // Don't search moves with negative SEE values + if ( (!isCheck || evasionPrunable) && move != ttMove && !move_is_promotion(move) && pos.see_sign(move) < 0)