summaryrefslogtreecommitdiff
path: root/src/root.c
diff options
context:
space:
mode:
authorScott Gasch <[email protected]>2026-08-25 14:03:46 -0700
committerScott Gasch <[email protected]>2026-08-25 14:03:46 -0700
commitba803fe406ee2470aa461578f530d292380ec241 (patch)
treec083e1f88e1e8c978084b34b9b315c3eec682e32 /src/root.c
parent29d73f4dd59554a349aa8e86e5ea65f28c912ec9 (diff)
Add LMR with PV-adjacency guard (v7), verified against saved binary
Late Move Reductions using a depth x movecount table (Ethereal-style formula), gated off PV nodes and the ply directly below a PV node (PLY_INFO.fIsPVNode), with magnitude-aware re-search on fail-high. Verified node-for-node identical to the previously tested-good v7 binary on a canary position (sd 10) after reconstructing from a ZFS snapshot of search.c/root.c/split.c taken just before that binary was built. Co-Authored-By: Claude Sonnet 5 <[email protected]>
Diffstat (limited to 'src/root.c')
-rwxr-xr-xsrc/root.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/root.c b/src/root.c
index aa678b1..7c50a65 100755
--- a/src/root.c
+++ b/src/root.c
@@ -456,6 +456,17 @@ Return value:
ASSERT(d);
Trace("Null move cutoff rate: %5.3f percent.\n",
((n / d) * 100.0));
+ n = (double)(ctx->sCounters.tree.u64HistoryPruneReSearches);
+ d = (double)(ctx->sCounters.tree.u64HistoryPrunes) + 1;
+ Trace("History/LMR pruning: %"COMPILER_LONGLONG_UNSIGNED_FORMAT
+ " reduced, %5.3f percent needed a full-depth re-search.\n",
+ ctx->sCounters.tree.u64HistoryPrunes, ((n / d) * 100.0));
+ n = (double)(ctx->sCounters.tree.u64FutilityPrunes);
+ d = (double)(ctx->sCounters.tree.u64FutilityCandidates) + 1;
+ Trace("Futility pruning: %"COMPILER_LONGLONG_UNSIGNED_FORMAT
+ " candidates, %5.3f percent actually pruned "
+ "(rest saved by fail-high%% / SEE gates).\n",
+ ctx->sCounters.tree.u64FutilityCandidates, ((n / d) * 100.0));
if (ctx->sCounters.egtb.uProbes > 0)
{
n = (double)(ctx->sCounters.egtb.uHits);