From 9645e8e4e76aebc4b3099b20846c14e18768cab4 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Wed, 28 Jul 2010 09:39:28 +0200 Subject: [PATCH] Lower SingularExtensionDepth to 7 plies for non-pv To compensate for the extra work skip singular searches deemed to fail because excluded node failed high already in the past. After 1200 games at 1+0 Mod vs Orig +387 =1274 -339 (+8 ELO) Signed-off-by: Marco Costalba --- src/search.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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 -- 2.39.2