From: Joona Kiiski Date: Wed, 27 Jan 2010 17:49:54 +0000 (+0200) Subject: Fix capture pruning X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=cd112ee8eb33e69dc0e1aa3cf1b6e6516718c9de;hp=bb968fd42a6e3c14755332f5a4c4829faaf4f9de Fix capture pruning We forgot to update bestValue previously Signed-off-by: Marco Costalba --- diff --git a/src/search.cpp b/src/search.cpp index c3c2925f..6d1949de 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1542,6 +1542,36 @@ namespace { // Update current move movesSearched[moveCount++] = ss[ply].currentMove = move; + // Futility pruning for captures + // FIXME: test disabling 'Futility pruning for captures' + // FIXME: test with 'newDepth < RazorDepth' + Color them = opposite_color(pos.side_to_move()); + + if ( !isCheck + && newDepth < SelectiveDepth + && !dangerous + && pos.move_is_capture(move) + && !pos.move_is_check(move, ci) + && !move_is_promotion(move) + && move != ttMove + && !move_is_ep(move) + && (pos.type_of_piece_on(move_to(move)) != PAWN || !pos.pawn_is_passed(them, move_to(move)))) // Do not prune passed pawn captures + { + int preFutilityValueMargin = 0; + + if (newDepth >= OnePly) + preFutilityValueMargin = 112 * bitScanReverse32(int(newDepth) * int(newDepth) / 2); + + Value futilityCaptureValue = ss[ply].eval + pos.endgame_value_of_piece_on(move_to(move)) + preFutilityValueMargin + ei.futilityMargin + 90; + + if (futilityCaptureValue < beta) + { + if (futilityCaptureValue > bestValue) + bestValue = futilityCaptureValue; + continue; + } + } + // Futility pruning if ( !isCheck && !dangerous