2: 'pre-registered' -> 'recorded in advance'; Appendix D states the order is attested only by the author's git history. 3: Dekker, Illinois and false position exhaust the budget on aps.13.00 under either criterion (stalled where |f|<1e-62, no sign change within 1e-6) - hence unchanged totals. 4: exact-zero stops in Table 11 (CHA: Brent 15/20, Chandrupatla 4/20, A' 2/20; corpus 1: none, transformation still 3.4x cheaper). 5: Table 12, the multiplicity estimated during the run (A' ahead; the analogy order inside Chandrupatla closes 31-59% of the gap on multiple roots and pays on simple ones; Lagouanelle blind on side-alternating triples); 6.6, conclusion, future work. 6: Algorithms 1-2 - lo/hi, return on a stall, L_x/L_f and the empty memory, the step pattern as a formula, O(n^2). 7: Table 3's two bracket-scaled rows, dashes in Table 5, the abstract's last sentence (250 words). verify_revision2: 17 checks. Server: verify 544 OK / 0 BAD, regression x2 1238 passed, PDF 32 pages, 0 errors, 0 overfull.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
simroot/transformed.py: Chandrupatla on G(f) with m_hat estimated in the run; bit-identical to chandrupatla with no estimate (test). Bug found and pinned by a test: |f|^(1/m_hat) overflowed with an OverflowError on the fractional branch; now inf and the step halves.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Title: 'Root Finding by Similarity and Analogy: A Bracketing Method with a Data-Selected Decision Layer'. Abstract 246 words. Main text 10.4k words (was 17.4k): search reports moved to Appendices A (old 6-7), B (wall-clock), C (negative results); revision history removed; pronouns for Chandrupatla's method fixed; tables numbered in order. New: Algorithm 2 (complete A'), the decision layer counted honestly in 6.5, Code and data availability, Appendix D (30 pre-registrations against the first commit of their own results, read from git by check_prereg_order.py: 25 before, 4 same commit, 1 decided on the smoke; A' frozen at 8027d7f between corpus 4's definition 657df10 and its results 6d2531e). Literature: Bus & Dekker 1975, Fernandez-Diaz & Menendez-Perez 2023 (two dimensionless parameters; SFRFm on sign(f)|f|^(1/m) with known multiplicity - the nearest precursor of the split), Cordero-Neta-Torregrosa 2021; Illinois and Ridders cited. verify_article: explicit check that every head-to-head row sums to its set. check_new_numbers.py: no number new to the text except headings, references, hashes. Server: verify 527 OK / 0 BAD, regression x2 1232 passed, PDF 30 pages, 0 errors, 0 undefined, 0 overfull.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
simroot/pure.py: flatlagmempt / flatbandmempt / flatflagmempt - A' with only the flat detector
swapped (Lagouanelle without declining outside (0,1), with memory; Chandrupatla's band; none).
A' itself is untouched: bit-identical to the compiled simbracket on all 868 problems (x2).
sweep_controls.py: K2 through sweep_fourth's harness, K1 with the oracle order m*.
Amendment 1: m* <= 0 is undefined (aps.15.22-30, C0.04 crashed the first full attempt).
Amendment 2 (after the smokes; only corpus-level K1 sums and corpus-4 K2 sums were seen): each
side's slope rounded to 0.01, m* defined only when both sides show a zero (jumps C0.03,
aps.15.21), group 'multiple/fractional' = m* >= 2 or m* <= 2/3, the branches of section 8.1
(simple roots measured at 0.99999 fell under the registered 'm* < 1').
tests/test_article_numbers.py: the verifier test runs on Linux only (the paper's numbers are a
Linux run; libm's last digit differs elsewhere, e.g. 4461 vs 4462).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
K1 (point 5): library Chandrupatla and Brent on sign(f)|f|^(1/m*) with the true order m* - an upper
bound for "transform and interpolate". K2 (point 6): A' with only the flat detector swapped -
Lagouanelle with the same memory (hysteresis), Chandrupatla's band, and no detector at all.
Decisive corpus: corpus 4; criteria C1-C5 and what the paper says under every outcome, including
withdrawing the claim that the analogy carries the gain if any control matches A'.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Point 1. The base step's order is Muller's 1.839, not 2: the derivative of the parabola through
the last three points errs by f'''/6 (x_n - x_{n-1})(x_n - x_{n-2}) = O(e_{n-1} e_{n-2}).
order_high_precision.py (3000 digits, to 1e-2900): 1.840 on cos x - x, e^x - 2, x^3 - x - 2,
sin x - 1/2; 2.000 only on x^2 - 2; two-point 1.618. The double-precision medians (2.000, 1.94)
are removed from the text.
Point 3. Every protocol number is re-scored under the criterion of section 9 - a sign change
within 1e-6 or f(x) == 0. rescore_uniform.py re-runs all 2779 distinct configurations of the 25
protocol sweeps on APS and CHA (the runs did not keep x) -> sweep_uniform.json, same row format;
it reproduces the APS/CHA lines of Table 10 exactly (built-in check). verify_article.py,
audit_similarity_places.py and the gap diagnostics read the re-scored data; the multiplier and
endowment measurements score by the same criterion. Table 7 (two criteria side by side) is gone;
7.3 now explains why the criterion is a sign change. Consequences stated in the text: the base
rule 2634 / 2357 against Chandrupatla 2595 / 1505 (1.5% behind on APS, no longer "level"); A'
2259 / 1074 (12.9% and 28.6% below Chandrupatla); the defect reading 2351 is second to the
shape reading 2337, not the record; the remembered analogy is level with no regime (2633 vs
2634) under this criterion; Table 9a's range is 19% to 425%.
Point 8. report_sweep.head_to_head counts every problem, failures charged (it counted only the
problems both methods solved, which is why Table 8 rows summed to 153 and 40). Family-level
comparisons added (A' vs Chandrupatla 8/1/6 of 15 and 7/0/2 of 9 families, not significant), and
an independence paragraph in section 9.
Point 11. sweep_itp.py: ITP (recommended constants and per-problem oracle) on all six corpora ->
Table 10; behind A' on every corpus, 0 bound violations.
Points 7, 9, 10 and the internals: the 2x bound is ours, not the rivals' promise; the law
predicts the group order only; "outside the proven bracket" explained (narrowest bracket of all
observed signs); 7.4's fun1 paragraph corrected (five costs under safe; the unguarded numbers
belong to fun1.4, fun1.5 and to fun3.1, fun5.1 separately); Table 1's last cell; the corpus-4
composition and odd multiplicities stated, also in the abstract.
build_tex.py: pdflatex output decoded with errors="replace" (a UTF-8 character cut by TeX's log
wrap crashed the build). Table 10 column widths rebalanced.
Checks: verify_article on the server 500 OK / 0 BAD (467 existing with the new values, 33 new);
regression x2 on the server 1232 passed, 0 failed; PDF 28 pages, 0 errors, 0 undefined, 0 overfull.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
lib/simbracket/_core.pyx ports exactly the A' path of simroot.pure.pure_root (tent similarity,
three-point scale, projection c=2, contra+flatanalogmempt+exp+half+close+sub, pattern) with
Python's semantics kept where they differ from C: min/max keep the first argument on ties and
NaN, float division by zero raises, math.log raises at 0, and math.hypot and the builtin sum
(compensated since 3.12) are called rather than re-coded. find_root(f, a, b, xtol, maxfev) ->
(x, nfev, converged); evaluation_bound(a, b, xtol) = 2*ceil(log2(|b-a|/xtol)) + 3.
tests/test_simbracket_equivalence.py: bit-identical x and evaluation count against pure_root on
all 868 problems of the six corpora (the 91 Roots.jl problems in full), at xtol 1e-12 and 1e-8
and with the budget cut to 12; errors match; the loaded module is the compiled one. 7/7 on
Windows and on Linux. check_simbracket.py: removing any one component from the reference
makes 36 to 455 problems differ (the test discriminates); the compiled form is 4x faster.
The wheel carries only the compiled extension; _core.c is generated (gen_c.py) and ignored.
Regression on the server x2: 1232 passed, 0 failed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
S-ablation of A' (server): A' with each of the nine similarity functions in the step - tent 4443 on the paper protocol (13032 over 855 problems), the nearest other function e^-|z| 4988 (+12%; +9% over six corpora), quadratic ones 18410-18422 (+315%); ranking as the contraction law predicts; guarantee held with every S. The audit of section 7 rerun on the regenerated sweeps (APS unchanged: triple by shape -493 with the tent, +250 with 1/sqrt(1+z^2); defect -283 vs +215).
Text: abstract and section 3 no longer call the similarity scaffolding - the tent making the step Newton's is a property of the similarity chosen; a paragraph in section 7 on the audit; Table 9a; new 8.6 'What is known, and what is new' - Lagouanelle (the order estimate of 7.1 / 10.5), Rall and Hansen-Patrick (8.1), the log-log slope / COC / ACOC (8.2, formula 6), Schroeder and Traub (the split 7 = false position on sign(f)|f|^(1/m)), Brent's acceptance condition (half), Dekker/Brent (tolerance step); what we found no counterpart for is the decision layer by similarity and analogy and the step set by a similarity whose form is decisive. References 13-19. verify_article: Table 9a, the percentages and the audit numbers added; server 446 OK, 0 BAD; regression x2 1226 passed, 0 failed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
'half': the step promises the root in the half near x (S >= 1/2) while the bracket line puts it in the far half (smaller |f| at the far end) -> halve.
half alone APS 2806 -> 2564 (!) CHA 3220 -> 3202
G2 + contra + rem + point + exp + half APS 2773 -> 2559 CHA 2073 -> 2047 both 4606 (all of H1-H4; goal kept)
per problem vs Chandrupatla: APS 98/17/38 p=2.7e-7, CHA 27/6/7 p=8e-4
contra + rem + point + exp + half (no G2) APS 2551 CHA 2044 both 4595 (H2 fails by 24)
with defect it does not combine (APS 2531 -> 2651): the two refuse overlapping steps.
fun9: 77 -> 68 (Chandrupatla 55); fun9.5 24 -> 16.
Server regression x2: 1204 passed, 1 failed = the paper-number check.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Translation limit of the analogy (f shrank, x-scale did not -> m = inf):
defect + remembered + point + exp APS 2531 CHA 1972 both 4503
G2 + defect + remembered + point + exp APS 2588 CHA 1997 both 4585
G2 + contra + remembered + point + exp APS 2773 CHA 2073 both 4846
Chandrupatla APS 2787 CHA 2441 both 5228
Per problem against Chandrupatla now SIGNIFICANT ON BOTH SETS: G2+contra+rem+pt+exp APS 98/18/37 p=1.5e-7, CHA 28/3/9 p=0.0026; defect+rem+pt+exp APS 86/20/47 p=9e-4, CHA 27/3/10 p=0.0076.
NOT where predicted: fun9 only -1..-3; the gain is on the flat families (x^9 177 -> 161, x^19 339 -> 167).
Server regression x2: 1179 passed, 1 failed = the paper-number check.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Splitting in the flat regime at the point from the analogous pair's order (t = |FA|^(1/m) / (|FA|^(1/m) + |FB|^(1/m))) instead of the midpoint:
G2 + analogy + order point APS 2780 CHA 2221 both 5001 (P1-P4 all hold; vs Chandrupatla 2787 / 2441 / 5228)
G2 + contra + remembered + point APS 2775 CHA 2119 both 4894 (P3 fails by 2 against its midpoint twin)
defect + remembered + point APS 2532 CHA 2164 both 4696 (P3 fails by 2)
Flat fun3-6: 1234 -> 847 (analogy), 1151 -> 743 (remembered) - below pure bisection 1044 and Chandrupatla 1068.
Per problem on the wide set vs Chandrupatla now 20-24 wins / 13-17 losses (p 0.1-0.7, not significant); on the canonical set the edge is kept (95/20/38 p=8e-7).
Guarantee: 0 violations and >= 193 solved in every project/safe/credit cell.
Server regression x2: 1150 passed, 1 failed = the paper-number check.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PREREG_flat_exit: NOT accepted - APS 2806 -> 3125, CHA 3220 -> 2503 (the exit is earned: APS 6897 without it).
PREREG_flat_judge: NOT accepted (smoke) - APS 3009, CHA 2486: at the model's point f is small by construction, the judgment cannot tell flat from simple there.
PREREG_flat_analogy: ACCEPTED with G2. Entry = unkept promise AND the (xi, phi) configuration nearer to its own past than to the line AND the pair's similarity exponent m >= 2. Projection + G2: APS 2782 -> 2780 (below Chandrupatla 2787, per problem 95/20/38 p=8e-7), CHA 3169 -> 2625, guarantee holds. Without G2: APS 2806 -> 2807 (fails by one call), CHA 2635. Simple roots are spared exactly (cost unchanged); flat families 1823 -> 1238, entry comes late. Goal (below Chandrupatla on both) NOT met: CHA 2625 vs 2441, per problem 9/6/25.
Server regression x2: 1052 passed, 1 failed = the expected paper-number check.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>