X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=588f76f3e6b789c6d8d500c56aba12eaf61718c7;hp=29b7c5f3ebab93a78b832a23905a0e07af535800;hb=9645e8e4e76aebc4b3099b20846c14e18768cab4;hpb=935fc09fd49328adfeaad372a5f4f2c48d8caf44 diff --git a/src/search.cpp b/src/search.cpp index 29b7c5f3..588f76f3 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -198,7 +198,7 @@ namespace { Depth PassedPawnExtension[2], PawnEndgameExtension[2], MateThreatExtension[2]; // Minimum depth for use of singular extension - const Depth SingularExtensionDepth[2] = { 8 * OnePly /* non-PV */, 6 * OnePly /* PV */}; + const Depth SingularExtensionDepth[2] = { 7 * OnePly /* non-PV */, 6 * OnePly /* PV */}; // If the TT move is at least SingularExtensionMargin better then the // remaining ones we will extend it. @@ -1213,6 +1213,17 @@ namespace { && is_lower_bound(tte->type()) && tte->depth() >= depth - 3 * OnePly; + // Avoid to do an expensive singular extension search on nodes where + // such search had already failed in the past. + if ( !PvNode + && singularExtensionNode + && depth < SingularExtensionDepth[PvNode] + 5 * OnePly) + { + TTEntry* ttx = TT.retrieve(pos.get_exclusion_key()); + if (ttx && is_lower_bound(ttx->type())) + singularExtensionNode = false; + } + // Step 10. Loop through moves // Loop through all legal moves until no moves remain or a beta cutoff occurs while ( bestValue < beta