From: joergoster Date: Wed, 21 Sep 2016 12:02:35 +0000 (+0200) Subject: Allowing singular extension in mate positions X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=351844061eddffac59e7a3c2d16af7ea9661bb3e;hp=8662bdfa124ae3ec90d9bf88842d9cfab9a43532 Allowing singular extension in mate positions Drop useless condition abs(ttValue) < VALUE_KNOWN_WIN And extend singular extension search to cases when ttValue stores a mate score. This improves mate finding and does not introduce any regression. Yery tested this patch against current master on the 6500+ Chest mate suite with 200K fixed nodes: shortest mates found: master: 1206 patch:1205 any mate found: master: 1903 patch: 2003 with 1 sec time: shortest mates found: master: 2667 patch: 2628 any mate found: master: 3585 patch: 3646 Verified for no regression: STC LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 25655 W: 4578 L: 4465 D: 16612 LTC LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 66247 W: 8618 L: 8557 D: 49072 bench: 6335042 --- diff --git a/src/search.cpp b/src/search.cpp index 610991f4..8581b0b3 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -845,8 +845,7 @@ moves_loop: // When in check search starts from here singularExtensionNode = !rootNode && depth >= 8 * ONE_PLY && ttMove != MOVE_NONE - /* && ttValue != VALUE_NONE Already implicit in the next condition */ - && abs(ttValue) < VALUE_KNOWN_WIN + && ttValue != VALUE_NONE && !excludedMove // Recursive singular search is not allowed && (tte->bound() & BOUND_LOWER) && tte->depth() >= depth - 3 * ONE_PLY; @@ -904,7 +903,7 @@ moves_loop: // When in check search starts from here && !extension && pos.legal(move)) { - Value rBeta = ttValue - 2 * depth / ONE_PLY; + Value rBeta = std::max(ttValue - 2 * depth / ONE_PLY, -VALUE_MATE); Depth d = (depth / (2 * ONE_PLY)) * ONE_PLY; ss->excludedMove = move; ss->skipEarlyPruning = true;