diff options
| author | Scott Gasch <[email protected]> | 2026-10-14 11:16:06 -0700 |
|---|---|---|
| committer | Scott Gasch <[email protected]> | 2026-10-14 11:16:06 -0700 |
| commit | 3845a082df2fd0d1bd059dd4c22c922067be826a (patch) | |
| tree | 01f7059b7d1d7e7f0495a281512a6ac1610a280b /src/search.c | |
| parent | 3d54c2cc82366040f00d5901f80dbe4e9d7bfe10 (diff) | |
Remove dead EFP references left over from its removal
EFP (extended futility pruning) was removed from Search()'s move loop
in favor of LMP's joint FH% table, but several comments, a dead
counter (u64EFPPruned, never incremented anywhere), and two unused
defines (EFP_FH_MIN_SAMPLES/EFP_FH_PRUNE_THRESHOLD_PCT_THOUSANDTHS)
were left behind claiming EFP still gates something. Clean these up:
- Delete u64EFPPruned (COUNTERS and g_Options) and its dead
reader/writer in root.c.
- Delete the two unused EFP_FH_* defines in search.c, and the stale
fAnyMoveEFPPruned comment describing a branch that no longer
skips a store.
- Fix dangling prose references to EFP in generate.c, chess.h,
searchsup.c, and testsearch.c that describe present-tense behavior
EFP no longer participates in, preserving the historical rationale
where it's still relevant (e.g. why EstimateHangingMaterialCp can
return a negative value).
Deliberately left alone (flagged for a separate decision, not a
clear delete): script.c's still-live JOINT_EXTRA_VERIFY calibration
labels ("EFP tier1/tier2"), search.c's _PostReduceDepthBucketEfpAligned
(same live mechanism, name only), searchsup.c's LMP_BASE_MOVENUM/
LMP_PER_PLY_MOVENUM dead macros (kept pending a real floor/ceiling
decision), and PLY_INFO.iPositional[2] (now write-only, but removing
it touches Eval()'s call signature everywhere).
Comment/dead-code only, no logic touched.
Co-Authored-By: Claude Sonnet 5 <[email protected]>
Diffstat (limited to 'src/search.c')
| -rw-r--r-- | src/search.c | 15 |
1 files changed, 0 insertions, 15 deletions
diff --git a/src/search.c b/src/search.c index 3abb44b..d0d67b9 100644 --- a/src/search.c +++ b/src/search.c @@ -75,15 +75,6 @@ extern FLAG g_fCanSplit[MAX_PLY_PER_SEARCH]; #define PREPARE_TO_TRY_MOVES (2) #define TRY_GENERATED_MOVES (3) -// EFP's fail-high-history exemption: below EFP_FH_MIN_SAMPLES -// observations, GetMoveFailHighPctThousandths's result isn't trusted -// enough to override the static-eval-based decision either way. -// THOUSANDTHS, not whole percent, since 2026-10-02's rename -- 100 -// thousandths == 10%, unchanged in effect from the old whole-percent -// EFP_FH_PRUNE_THRESHOLD of 10. -#define EFP_FH_MIN_SAMPLES (5) -#define EFP_FH_PRUNE_THRESHOLD_PCT_THOUSANDTHS (10000) // 10% - // 2026-10-13: "skip trying null-move at all" on the iEval <= iAlpha // side (alpha-side table, EV-neutral -- the real move loop still runs // and finds the correct score either way; we only forgo the cheap @@ -1848,12 +1839,6 @@ Search(IN SEARCHER_THREAD_CONTEXT *ctx, // --Ed Schroder StoreUpperBound(pos, iBestScore, uDepth, fThreat); } - // else: fail-low (iAlpha == iInitialAlpha) AND fAnyMoveEFPPruned -- - // no sound bound in either direction to store (the skipped move - // could have raised the true value above iBestScore, so it's not a - // valid upper bound; there's no mvBest to offer as a lower bound - // either, since nothing beat alpha). Store nothing rather than - // cache an unsound result. end: ASSERT(IS_VALID_SCORE(iBeta)); |
