Article (canonical .md), step 1: 42 stale numbers brought to the regenerated server sweeps (Tables 3-7, 5.3, 7.1-7.4, section 10), statements that no longer hold rephrased ((2)+(3) not worse than either alone on the wide-bracket set; the best constant-free configuration is no longer defect); the rule of section 3 renamed the base rule; new Section 8 (the flat regime recognised by analogy: the flag, the analogy with its own past, the translation limit, the split from the order, five more readings, the proposed method A', Tables 8-9) and Section 9 (out-of-sample evidence on four more corpora, Tables 10-11); negative results and conclusion renumbered 10-11. Abstract, introduction, conclusion and verify_article still to update.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
vvs
2026-09-21 20:44:31 +01:00
co-authored by Claude Opus 5
parent 92fb8c5c04
commit 8bf595d9be
7 changed files with 524 additions and 50 deletions
+38
View File
@@ -0,0 +1,38 @@
"""Proof-reading fixes to the new Sections 8-9 of article/sim_numerics.md (exact, counted).
python -u apply_article_fixes_8_9.py
"""
from __future__ import annotations
PATH = "article/sim_numerics.md"
REPL = [
("### 8.4 Four more readings", "### 8.4 Five more readings", 1),
("the exit) and the four readings of §8.4", "the exit) and the five readings of §8.4", 1),
("On the wide-bracket families it is ahead on eight of nine; the ninth is `fun9`, 65 against 55.",
"On the wide-bracket families it is ahead on seven of nine, level on `fun7` (the scoring "
"artefact of §7.3) and behind on `fun9`, 65 against 55.", 1),
("Removing both would change A′ by a few tenths of a per cent;",
"Removing both would change A′'s total by under one per cent (117 of 13032 evaluations);", 1),
("and ahead problem by problem on five of six.",
"and ahead problem by problem on all six, significantly on five.", 1),
]
def main():
with open(PATH, encoding="utf8") as fh:
text = fh.read()
bad = [(o, n, text.count(o)) for o, _new, n in REPL if text.count(o) != n]
if bad:
for o, n, got in bad:
print(f"expected {n}, found {got}: {o[:80]}")
raise SystemExit("aborted, nothing written")
for o, new, _n in REPL:
text = text.replace(o, new)
with open(PATH, "w", encoding="utf8") as fh:
fh.write(text)
print("fixed")
if __name__ == "__main__":
main()
+109
View File
@@ -0,0 +1,109 @@
"""Bring the stale numbers of article/sim_numerics.md to the regenerated server sweeps
(2026-09-21: after the sign-underflow fix and the _local_order fix). Every replacement is an
exact substring that must occur EXACTLY ONCE; anything else aborts without writing.
python -u apply_article_numbers.py
"""
from __future__ import annotations
PATH = "article/sim_numerics.md"
REPL = [
# Table 3
("| 3 | ITP, per-problem oracle | yes | 40/45 | 2611 | 0 |",
"| 3 | ITP, per-problem oracle | yes | 40/45 | 2647 | 0 |"),
("| 4 | similarity, $e^{-\\lvert z\\rvert}$, bracket scale, both guards | no | 40/45 | 2733 | 0 |",
"| 4 | similarity, $e^{-\\lvert z\\rvert}$, bracket scale, both guards | no | 40/45 | 2736 | 0 |"),
("| 6 | ITP, recommended constants | yes | 40/45 | 2857 | 0 |",
"| 6 | ITP, recommended constants | yes | 40/45 | 2896 | 0 |"),
("| **47** | **proposed: tent, 3-point, projection ($c=2$)** | **no** | 40/45 | **3220** | 0 |",
"| **45** | **base rule: tent, 3-point, projection ($c=2$)** | **no** | 40/45 | **3220** | 0 |"),
("| 164 | TOMS 748 | yes | 40/45 | 4000 | 15 |", "| 159 | TOMS 748 | yes | 40/45 | 4000 | 15 |"),
("| 226 | Brent | yes | 38/45 | 4115 | 18 |", "| 227 | Brent | yes | 38/45 | 4115 | 18 |"),
("5871 for the ITP oracle, 6820 for TOMS 748", "5907 for the ITP oracle, 6820 for TOMS 748"),
# Table 4 and the rankings of 5.3
("| 3-point derived | **6809** | 22294 |", "| 3-point derived | **6893** | 22315 |"),
("| 2-point derived | 6906 | 22167 |", "| 2-point derived | 6981 | 22206 |"),
("| bracket | 10263 | 19137 |", "| bracket | 10279 | 19127 |"),
("$1-|z|$ (6496), $e^{-|z|}$ (6822), $1/(1+|z|)$ (7038), $(1+|z|)^{-2}$ (9502), "
"$1-\\sqrt{|z|}$ (10497), $1-|z|^{1/3}$ (11941), $e^{-z^2}$ (14314)",
"$1-|z|$ (6560), $e^{-|z|}$ (6895), $1/(1+|z|)$ (7118), $(1+|z|)^{-2}$ (9578), "
"$1-\\sqrt{|z|}$ (10546), $1-|z|^{1/3}$ (12002), $e^{-z^2}$ (14307)"),
("3-point (6496), 2-point (6628), bracket (9081), start (14540)",
"3-point (6560), 2-point (6702), bracket (9107), start (14540)"),
# Table 5 and its text
("| (1) trust before the step, projection | 2848 | 3074 | 5922 |",
"| (1) trust before the step, projection | 2848 | 3114 | 5962 |"),
("| (1)+(2) points chosen by shape, *safe* | **2527** | 3108 | 5635 |",
"| (1)+(2) points chosen by shape, *safe* | **2527** | 3126 | 5653 |"),
("| (1)+(3) far end by dissimilarity, projection | 2726 | **2785** | **5511** |",
"| (1)+(3) far end by dissimilarity, projection | 2726 | **2799** | **5525** |"),
("| (1)+(2)+(3), *safe* | 2884 | 2859 | 5743 |", "| (1)+(2)+(3), *safe* | 2884 | 2871 | 5755 |"),
("| ITP, per-problem oracle | 3260 | 2611 | 5871 |", "| ITP, per-problem oracle | 3260 | 2647 | 5907 |"),
("the 5511 of reading (3) passes ITP's oracle (5871)", "the 5525 of reading (3) passes ITP's oracle (5907)"),
("where Chandrupatla needs 2441 against our 2683 (reading (3) under *safe*)",
"where Chandrupatla needs 2441 against our 2695 (reading (3) under *safe*)"),
("Taken together, (2) and (3) give 2884 and 2859 — worse than either alone.",
"Taken together, (2) and (3) give 2884 and 2871 — worse than either alone on the canonical "
"set, and on the wide-bracket set worse than (3) alone."),
# Table 6 (wide-bracket columns) and its text
("| both | 4522 | **3675** | 3387 | **3216** |", "| both | 4522 | **3675** | 3406 | **3241** |"),
("| bracket | 4606 | **3542** | 3571 | **3303** |", "| bracket | 4606 | **3542** | 3602 | **3359** |"),
("| projection | 6932 | **6364** | 4794 | **4559** |", "| projection | 6932 | **6364** | 4789 | **4554** |"),
("| safe | 5987 | **5229** | 4108 | **3923** |", "| safe | 5987 | **5229** | 4134 | **3954** |"),
("| step | 6435 | **5551** | 4257 | **4022** |", "| step | 6435 | **5551** | 4287 | **4068** |"),
("is 2884, against 2683 for reading (3) above and 2423 for Chandrupatla",
"is 2884, against 2695 for reading (3) above and 2441 for Chandrupatla"),
# 7.2
("the wide-bracket set costs 3066 under the projection and 2899 under *credit*",
"the wide-bracket set costs 3059 under the projection and 2892 under *credit*"),
("it refuses 63.6% of steps", "it refuses 63.5% of steps"),
("(best 2868 on the wide-bracket set)", "(best 2897 on the wide-bracket set)"),
("Under the earned projection it gives 3545 and 2949, the best total over both sets of any "
"constant-free configuration measured (6494 against 6588). It refuses only 7.0% of steps",
"Under the earned projection it gives 3545 and 2949 (6494 against 6588), the best of the "
"readings of this section without a constant; the flat regime of §8 does better still. It "
"refuses only 6.6% of steps"),
("Over both sets it costs 5733 against the 5511 of reading (3)",
"Over both sets it costs 5733 against the 5525 of reading (3)"),
# Table 7
("| ITP | 3957 | 3767 | 2857 | 1907 |", "| ITP | 3957 | 3767 | 2896 | 1907 |"),
# 7.4
("(verified on all 428 non-degenerate states; in the other five the negative weight "
"underflowed to $-0$)",
"(verified on all 428 non-degenerate states; in the other three the negative weight "
"underflowed to $-0$)"),
("splits the 244 evaluations of the gap in two", "splits the 256 evaluations of the gap in two"),
("But 160 of the 244 — two thirds —", "But 172 of the 256 — two thirds —"),
("our step removes 0.41–0.81 halvings", "our step removes 0.41–0.75 halvings"),
("to 296, 239, 235 — against his own 297, 233, 233", "to 296, 239, 228 — against his own 297, 233, 233"),
("it reports $m\\ge2$ on only 5.8% of states of families whose order is by construction 3 to 19",
"it reports $m\\ge2$ on none of the states of families whose order is by construction 3 to 19"),
# 8
("the same similarity over the whole Chandrupatla set costs 4099 against 3220, so a switch chosen "
"per benchmark is worse than no switch at all: 6905 against 6026",
"the same similarity over the whole Chandrupatla set costs 4109 against 3220, so a switch chosen "
"per benchmark is worse than no switch at all: 6915 against 6026"),
("and 3111 on the wide-bracket set against 2683", "and 3111 on the wide-bracket set against 2695"),
("the wide-bracket set improves from 3643 to 3474", "the wide-bracket set improves from 3695 to 3541"),
("An earlier version compared the 3474 with 4516", "An earlier version compared the 3541 with 4516"),
]
def main():
with open(PATH, encoding="utf8") as fh:
text = fh.read()
bad = [(old, text.count(old)) for old, _new in REPL if text.count(old) != 1]
if bad:
for old, n in bad:
print(f"occurs {n}x: {old[:90]}")
raise SystemExit("aborted, nothing written")
for old, new in REPL:
text = text.replace(old, new)
with open(PATH, "w", encoding="utf8") as fh:
fh.write(text)
print(f"{len(REPL)} replacements applied")
if __name__ == "__main__":
main()
+42
View File
@@ -0,0 +1,42 @@
"""Rename the rule of Section 3 from 'the proposed rule' to 'the base rule' in
article/sim_numerics.md: the method the paper now proposes is A' (Section 8), built on it.
Each (old, new, expected count) must match exactly, otherwise nothing is written.
python -u apply_article_rename.py
"""
from __future__ import annotations
PATH = "article/sim_numerics.md"
REPL = [
("the proposed rule", "the base rule", 10),
("The proposed rule and the same rule", "The base rule and the same rule", 1),
("The proposed projection never binds", "The projection of the base rule never binds", 1),
("| ours, proposed (projection) |", "| ours, base rule (projection) |", 1),
("The configuration proposed in Section 3", "The base rule of Section 3", 1),
("**proposed: tent, 3-point, projection ($c=2$)**", "**base rule: tent, 3-point, projection ($c=2$)**", 1),
("| proposed: tent, 3-point, projection $c=2$ (§3) |", "| base rule: tent, 3-point, projection $c=2$ (§3) |", 1),
("APS, projection — proposed", "APS, projection — base rule", 1),
("Chandrupatla, projection — proposed", "Chandrupatla, projection — base rule", 1),
("under the proposed projection", "under the projection of the base rule", 1),
("the proposed scale wins", "the derived scale wins", 1),
]
def main():
with open(PATH, encoding="utf8") as fh:
text = fh.read()
bad = [(o, n, text.count(o)) for o, _new, n in REPL if text.count(o) != n]
if bad:
for o, n, got in bad:
print(f"expected {n}, found {got}: {o}")
raise SystemExit("aborted, nothing written")
for o, new, _n in REPL:
text = text.replace(o, new)
with open(PATH, "w", encoding="utf8") as fh:
fh.write(text)
print("renamed")
if __name__ == "__main__":
main()
+38
View File
@@ -0,0 +1,38 @@
"""Renumber: the negative results become Section 10 and the conclusion Section 11, making room
for the new Sections 8 (the flat regime by analogy) and 9 (out-of-sample evidence). Exact
substrings with expected counts; nothing is written unless every one matches.
python -u apply_article_sections.py
"""
from __future__ import annotations
PATH = "article/sim_numerics.md"
REPL = [
("(iii) the negative results of §8;", "(iii) the negative results of §10;", 1),
("as in item 5 of §8, and", "as in item 5 of §10, and", 1),
("(4449 on the canonical set, §8)", "(4449 on the canonical set, §10)", 1),
("the curvature-corrected scale of §8 item 5", "the curvature-corrected scale of §10 item 5", 1),
("measured and refuted (§8, item 11)", "measured and refuted (§10, item 11)", 1),
("## 8. Negative results", "## 10. Negative results", 1),
("## 9. Conclusion", "## 11. Conclusion", 1),
]
def main():
with open(PATH, encoding="utf8") as fh:
text = fh.read()
bad = [(o, n, text.count(o)) for o, _new, n in REPL if text.count(o) != n]
if bad:
for o, n, got in bad:
print(f"expected {n}, found {got}: {o}")
raise SystemExit("aborted, nothing written")
for o, new, _n in REPL:
text = text.replace(o, new)
with open(PATH, "w", encoding="utf8") as fh:
fh.write(text)
print("sections renumbered")
if __name__ == "__main__":
main()
+123
View File
@@ -0,0 +1,123 @@
## 8. The flat regime, recognised by analogy
§7.4 left one decision open: *when to give the model up*. On the pure powers `fun3`–`fun6` the right move is to halve, Chandrupatla halves on up to all of his steps, and every reading of a single state measured so far confuses "the model is useless here" with something else. This section closes that decision, and the reading that closes it is not a similarity of the current state to a prototype but a similarity of the run to *its own past* — an analogy in Pólya's sense [8], two situations agreeing in more than one relation. Every rule below was pre-registered before its code and its run, with a stop rule; the rejected ones are listed in §10 with their numbers.
### 8.1 The flag: a promise that was not kept
A tangent step on an approach of local order $m$ lands at $e(1-1/m)$ and leaves the residual $r=|f_\text{new}/f_\text{old}|=(1-1/m)^m$ on the same side of the root. It beats a halving exactly when $|1-1/m|<\tfrac12$, that is for $\tfrac23<m<2$. At the upper end $r=(1-\tfrac12)^2=\tfrac14$. So a model step that did not cross the root and left $r\ge\tfrac14$ is a *promise not kept*: the model is in the regime where a halving would have done better. The constant is bisection's $\tfrac12$, carried through the formula.
The flag sees the regime — on the flat families it rises on most model steps — but acted upon step by step it does not pay. Replacing the one flagged step by a halving costs the canonical set 2806 → 3029, because a simple root far from convergence also breaks its promises (the flag rises at least once on 142 of the 154 canonical problems). Every refinement of *when* to halve that reads the moment alone — twice in a row, the promise together with a creep in one direction, a halving that sticks once begun, a judgment of the evaluated point against the line through the bracket — trades one set for the other (§10, items 12–14).
### 8.2 The analogy: similarity of a run to its own past
What distinguishes a pure power from a simple root is not the shape of one configuration — `fun1` on a wide bracket looks as non-linear as $x^9$ — but what happens under zoom. A pure power $f=c(x-r)^m$ is similar to itself: zooming about the root by $L$ scales $x-r$ by $L$ and $f$ by $L^m$, so the *dimensionless configuration* of the last three points,
$$\xi=\frac{x_k-x_{k-1}}{x_{k-2}-x_{k-1}},\qquad \varphi=\frac{f_k-f_{k-1}}{f_{k-2}-f_{k-1}},$$
recurs as the iteration proceeds. At a simple root, zooming in makes $f$ look like its tangent, and the configuration tends to the *linear prototype* $\varphi=\xi$ instead. Two prototypes, then: the line, and the run's own past. The judgment is ordinal — is the current $(\xi,\varphi)$ nearer to some earlier configuration of this run than to the line? — with the plane's Euclidean distance and the perpendicular to the line, the one geometric choice in this section, declared as such.
Nearness of configurations is one relation. An analogy in the full sense needs a second, and the pair supplies it: if the analogous pair shrank $x$ by $L_x$ and $f$ by $L_f$, the power law requires $L_f=L_x^{\,m}$, so the order is *read from the analogy itself*,
$$m=\frac{\ln L_f}{\ln L_x}.\tag{6}$$
A chance resemblance at a simple root reads $m\approx1$; a pure power of order 5 reads 4.9. The regime is the one where a tangent step loses, $m\ge2$ (§8.1) — no new constant. On the traces of the base rule, at the moments the flag rises, the three conditions together hold on 3 of the 154 canonical problems, on all 20 flat problems, and on none of `fun2`, `fun8`, `fun9`.
**The analogy belongs to the run, the flag to the moment.** In the cycle the base rule runs on a pure power — undershoot, undershoot, crossing, a nearly empty step — the flag rises in the phases whose configuration does *not* recur (the empty step grows emptier every cycle), while the recurring phases have the flag down. Requiring both in one state delayed the entry on the flat problems to their thirteenth state on average. Once established, the analogy is therefore remembered for the run, and the regime is entered at the next unkept promise (eighth state on average).
**The translation limit.** The exponential is self-similar by *translation*, $e^{x-1}=e^x/e$: along its flank the step does not shrink while $f$ does, so (6) is undefined or negative. That is the limit $m\to\infty$ of (6), steeper than any power, and it is read as $m=\infty$: when an analogous pair shows $L_f<1\le L_x$. A high power far from its root is locally an exponential, $x^m=e^{m\ln x}$, and it was there, not on the flank of `fun9` it was built for, that the limit paid.
**Exit.** Inside the regime the step splits the bracket (§8.3). At every split the evaluated $f$ is judged against two predictions: the line through the bracket ends, $F_A(1-t)+F_Bt$ at the split fraction $t$, and 0. Nearer the line, the regime is left and the remembered analogy is cleared. A sticky halving without this exit cost the canonical set 6897; with it, 3125 — the exit is what makes a false entry cheap.
### 8.3 Where to split: the point from the order
Halving is the answer when nothing is known about the shape; inside the regime the order is known. For $|f|\propto|x-r|^m$ the ends of the bracket lie at distances in the ratio $|F_A|^{1/m}:|F_B|^{1/m}$ from the root, so the regime splits at
$$t=\frac{|F_A|^{1/m}}{|F_A|^{1/m}+|F_B|^{1/m}},\tag{7}$$
which is exact for a pure power and becomes the midpoint as $m\to\infty$. The order read from a *failed promise*, $(1-1/m)^m=r$, was tried first and gave $m=\infty$ in 163 of 174 entries, because the base step is not a pure tangent; the order read from the *analogy* is the one that works. With it the flat families of the wide-bracket set cost 743–847 evaluations against 1044 for pure bisection and 1068 for Chandrupatla.
### 8.4 Four more readings
**The half the step promises.** $S(z)\ge\tfrac12$ means a step of at most half the way to the far end: the model promises the root in the half of the bracket *near* $x$. The line through the bracket ends puts it nearer the end with the smaller $|f|$. When the far end has the smaller $|f|$ the two disagree about the half, and the evaluation halves. On a steep flank — a slope dominated by $f(81)=1.5\cdot10^{35}$ on `fun9.5` — this is the false promise "the root is here", and removing it alone takes the canonical set from 2806 to 2564.
**The sign contradiction.** The bracket says which way $f$ must go between its ends; the last two points say which way it goes here. Opposite signs — the local picture contradicts the bracket — and the evaluation halves. It is the cause of the `fun9` well: a near-cancelling end reads the root as close while $|f|$ doubles for seventeen steps.
**The repeated step pattern.** Two successive moves the same way, of similar length, mean the iterate creeps along a geometric series whose remainder is $\text{step}\cdot s/(1-s)$; the step is lengthened by $1/(1-s)$, with $s$ the similarity of successive step lengths, but only when the pattern of successive length ratios repeats with a period read from the data (the lag of highest mean similarity) and that similarity exceeds $\tfrac12$.
**The overshoot branch.** §8.1's inequality has a second branch, $m<\tfrac23$: a root of order below one, where the tangent step overshoots and the iterate oscillates about the root ($\sqrt{|x|}\operatorname{sign}x$: 84 evaluations of the base rule). The flag for it is the unkept promise *with* a sign change, $f_\text{new}/f_\text{old}\le-\tfrac14$, and an analogous pair reading $0<m\le\tfrac23$; the split (7) is again exact for a pure power. The exit judgment of §8.2 separates a flat root from a simple one; at a root of order below one $f$ is far from 0 on both sides and the exit fires falsely, so the memory of this branch is *not* cleared by it (measured on the development corpora: 19 evaluations with the memory kept, 65 without).
**Borrowed: the tolerance step.** Once the root is reached from one side the bracket's far end can stay far: on $\sin$ over $[3,4]$ the base rule reaches $|f|\approx10^{-16}$ in 7 evaluations and then halves the remaining $1.3\cdot10^{-7}$ down to the tolerance in 17 more. Dekker [9] and Brent [2] step at least the tolerance; we do the same, $\varepsilon_x/2$ towards the far end, when the model's step is shorter — but only after the model has *kept* its previous promise ($r<\tfrac14$), because at the start of a run a slope dominated by a huge far value promises the root at an end. This element is not ours and is named as such.
### 8.5 The proposed method
The method this paper proposes, **A′**, is the base rule of §3 — tent similarity, three-point scale, projection with the declared multiplier $c=2$ — with the regime of §8.2–8.3 (the analogy remembered, its translation limit, the split (7), the exit) and the four readings of §8.4. Its constants are bisection's $\tfrac12$ and what follows from it: $\tfrac14=(1-\tfrac12)^2$ and the two branches $m\ge2$, $m\le\tfrac23$ of $|1-1/m|>\tfrac12$. Three choices are declared rather than derived: the multiplier $c$ of the projection (§3.1), the Euclidean geometry of the $(\xi,\varphi)$ plane, and the pattern test of the step lengthening (lags from 2 to half the history, threshold $\tfrac12$). The projection carries the guarantee, $2\lceil\log_2(w_0/\varepsilon_x)\rceil+3$ evaluations; it is verified with no violation on every corpus of this paper and under every safeguard of the grid.
**Table 8.** A′ on the protocol of §4 (published roots, failures charged 200). Per problem against each rival: wins/ties/losses, exact two-sided sign test.
| | APS-154 | CHA-45 | both | vs A′ per problem, APS | vs A′ per problem, CHA |
|---|---|---|---|---|---|
| **A′ (proposed)** | **2438** | **2005** | **4443** | — | — |
| A′, earned budget (no free constant) | 3608 | 2807 | 6415 | | |
| base rule (§3) | 2806 | 3220 | 6026 | | |
| Chandrupatla | 2787 | 2441 | 5228 | A′ 103/20/30, $p=1.5\cdot10^{-10}$ | A′ 29/4/7, $p=3\cdot10^{-4}$ |
| TOMS 748 | 2820 | 4000 | 6820 | A′ 127/6/20 | A′ 38/2/0 |
| Brent | 2889 | 4115 | 7004 | A′ 118/17/18 | A′ 33/3/2 |
| ITP, per-problem oracle | 3260 | 2647 | 5907 | A′ 126/7/20 | A′ 35/1/4 |
A′ is 12.5% below Chandrupatla on the canonical set and 17.9% below on the wide-bracket set, and beats every rival problem by problem on both. On the wide-bracket families it is ahead on eight of nine; the ninth is `fun9`, 65 against 55. The earned-budget form keeps its constant-free guarantee of bisection plus one step and pays for it as in §3.1.
**Table 9.** Leave-one-out ablation of A′ on all six corpora of §9 (uniform criterion, a sign change within $10^{-6}$). Δ = total without the component − total with it; positive means the component earns its place.
| component removed | APS | CHA | new-1 | Roots.jl | applied | fourth | sum |
|---|---|---|---|---|---|---|---|
| the whole regime | −7 | +1013 | +1660 | +324 | +77 | +2269 | **+5336** |
| the split (7) (midpoint instead) | −5 | +479 | +667 | +272 | +30 | +1672 | **+3115** |
| overshoot branch | −6 | 0 | −7 | +16 | +63 | +893 | +959 |
| tolerance step (borrowed) | +130 | +35 | +97 | +78 | +135 | −2 | +473 |
| the half the step promises | +249 | +65 | +82 | −16 | −5 | +1 | +376 |
| translation limit | +31 | +143 | +100 | −21 | −2 | +87 | +338 |
| repeated step pattern | −22 | −6 | +123 | −30 | −10 | +34 | +89 |
| sign contradiction | +11 | −12 | +29 | 0 | +1 | −1 | +28 |
Every component is positive in sum; the regime and the split carry the method. Two are marginal and we say so: the step pattern earns on two corpora of six and loses on four, and the sign contradiction is within noise (+28 over 855 problems). Removing both would change A′ by a few tenths of a per cent; they are kept because the pre-registered rule removes only a component that earns nowhere.
## 9. Out-of-sample evidence
Every decision above was taken on the two sets of §4. Pre-registration protects each decision but not the chain: the final configuration was selected on the same 199 problems. Four further corpora were therefore used, each fixed and committed before any method was run on it, each with its criteria and stop rule written down first.
1. **New corpus 1** — 206 problems: SciPy's `original` set (6) and five generated classes of 40 (seed 20260921): smooth simple roots, transcendental simple roots, multiple roots $|x-r|^p$ with $p\sim U(2,20)$, exponential flanks, and near-cancelling terms of the `fun9` kind.
2. **Roots.jl / ModAB** — the published bracketing benchmark of the Julia package Roots.jl [12], taken from the ModAB benchmark of Ganchovski and Traykov [10]: 91 problems, of which 13 coincide with APS or Chandrupatla functions (a seven-point identity test) and are excluded, leaving 78, many of them discontinuous or pathological.
3. **Applied and GSL** — the 10 bracketed problems of the GNU Scientific Library's root-finding test suite [11] and 122 equations from physics and engineering on grids fixed beforehand: Kepler's equation (eccentricity up to 0.999), Colebrook–White, Lambert's W, Planck/Wien, van der Waals for CO₂ (including near-critical), internal rate of return, the finite square well.
4. **Corpus 4** — 240 problems in six new families (seed 20260922): random polynomials with a simple root, polynomials with a multiple root, fractional powers $|x-r|^p$ with $p\sim U(0.15,0.95)$, sums of exponentials and sines, compositions $\tanh$, $\arctan$, $\log(1+q^2)$ of a cubic, and functions odd about the root. The code of A′ was committed *before* this corpus was run, and nothing was changed after.
Where roots are not known in closed form, and for uniformity on all six corpora, a run is solved when $f$ changes sign within $10^{-6}$ of its answer; the $x$-tolerance, the budget and the charge for a failure are those of §4.
**The history is part of the result.** The variant carried to corpora 1–3 was A′ without the tolerance step and the overshoot branch. It transferred to corpus 1 by every pre-registered criterion (total 10% below Chandrupatla, per problem 105/34/67, $p=0.005$), did *not* transfer to Roots.jl (total 6.5% below, but per problem 38/10/30, $p=0.4$) and lost on the applied corpus (14% above). The losses there were traced to two gaps of the base step — no closing of the bracket once the root is reached, and no recognition of roots of order below one — which became the last two readings of §8.4; they were developed on the seen corpora and tested once, on corpus 4.
**Table 10.** A′ against the library rivals on all six corpora (uniform criterion). Totals; in brackets the runs that break the $2\times$-bisection bound. Per problem against Chandrupatla: wins/ties/losses.
| corpus | A′ | Chandrupatla | Brent | TOMS 748 | A′ vs Chandrupatla |
|---|---|---|---|---|---|
| APS (154) | **2259** (0) | 2595 (0) | 2707 (0) | 2636 (0) | 103/20/31, $p=3\cdot10^{-10}$ |
| Chandrupatla (45) | **1074** (0) | 1505 (0) | 3238 (18) | 3088 (15) | 31/4/10, $p=0.001$ |
| new corpus 1 (206) | **3290** (0) | 3716 (0) | 6395 (38) | 5746 (22) | 108/33/65, $p=0.001$ |
| Roots.jl (78) | **1371** (0) | 1566 (0) | 2455 (11) | 2339 (9) | 44/14/20, $p=0.004$ |
| applied + GSL (132) | 1382 (0) | 1382 (0) | 1503 (1) | 1756 (1) | 48/52/32, $p=0.09$ |
| **corpus 4 (240), the one test** | **3656** (0) | 5717 (0) | 8267 (50) | 8084 (37) | **177/35/28, $p=10^{-27}$** |
| all 855 | **13032** | 16481 | 24565 | 23649 | |
Only the last line of corpora is evidence for A′ in the strict sense; the first five were seen while it was developed and are reported as a description. On corpus 4 A′ is 36% below Chandrupatla and wins 177 problems to 28. Without the two classes aimed at by the last two readings it is 2403 against 3569, per problem 107/31/22 ($p=10^{-14}$); on the simple-root classes alone, 737 against 747 (−1.3%), per problem 43/22/15 ($p=3\cdot10^{-4}$).
**Table 11.** Corpus 4 by class: totals of A′ / Chandrupatla, per problem wins/ties/losses.
| class | A′ | Chandrupatla | per problem |
|---|---|---|---|
| random polynomial, simple root | 433 | 419 | 20/8/12 |
| polynomial, multiple root | 1163 | 1805 | 39/1/0 |
| fractional power, $p<1$ | 924 | 1784 | 37/1/2 |
| sums of exponentials and sines | 304 | 328 | 23/14/3 |
| $\tanh$, $\arctan$, $\log(1+q^2)$ of a cubic | 503 | 1017 | 25/8/7 |
| odd about the root | 329 | 364 | 33/3/4 |
**What the evidence supports, and what it does not.** Against Brent and TOMS 748 A′ is ahead on every corpus, by 8% to 67% in total, and it keeps its bound on all 855 problems, which Brent breaks on 118 and TOMS 748 on 84. Against Chandrupatla it is ahead in total on five corpora and level on the sixth, and ahead problem by problem on five of six. The size of the lead is not uniform: it is large on multiple, fractional and nearly flat roots — the regime §8 recognises — and small on simple roots, where it is a matter of per cent. Where it is behind is named: `fun9` (65 against 55), the near-cancelling class of corpus 1 (491 against 391), random polynomials with a simple root in total (433 against 419, though ahead 20 to 12 in problems), and the smooth equations of the applied corpus, where the two are level.
+173 -50
View File
@@ -102,7 +102,7 @@ $$x' \;=\; x + \operatorname{sign}(x_\mathrm{far}-x)\cdot\min\!\Bigl(\frac{|f(x)
a Newton step with a three-point divided-difference derivative, clipped to the bracket and then projected as in §3.1. The similarity function does not appear in (4): it is scaffolding of the derivation, not machinery of the algorithm. a Newton step with a three-point divided-difference derivative, clipped to the bracket and then projected as in §3.1. The similarity function does not appear in (4): it is scaffolding of the derivation, not machinery of the algorithm.
We state this ourselves rather than leave it to be discovered, because it locates the contribution precisely. It is not a new family of methods. It is (i) a derivation that fixes every choice — which similarity, which scale, which safeguard — before any benchmark is consulted, and then predicts the ranking of all nine similarity functions correctly; (ii) a safeguard of ITP's projection type with ITP's truncation stage, and hence all three of its constants, removed; (iii) the negative results of §8; (iv) the measurements. We state this ourselves rather than leave it to be discovered, because it locates the contribution precisely. It is not a new family of methods. It is (i) a derivation that fixes every choice — which similarity, which scale, which safeguard — before any benchmark is consulted, and then predicts the ranking of all nine similarity functions correctly; (ii) a safeguard of ITP's projection type with ITP's truncation stage, and hence all three of its constants, removed; (iii) the negative results of §10; (iv) the measurements.
**Algorithm.** Given $[a,b]$ with $f(a)f(b)<0$ and tolerance $\varepsilon_x$: **Algorithm.** Given $[a,b]$ with $f(a)f(b)<0$ and tolerance $\varepsilon_x$:
@@ -201,7 +201,7 @@ Two remarks apply to both forms.
## 5. Results ## 5. Results
The grid is nine similarity functions × four scales × seven safeguards = 252 configurations, plus twelve baselines: 264 in all. The configuration proposed in Section 3 — tent similarity, three-point scale, projection safeguard with its multiplier declared — is one entry of that grid, fixed by the theory rather than chosen from the ranking; the constant-free earned variant of §3.1 is shown beside it. Chandrupatla's own method and Dekker's are among the baselines; an earlier version of these tables was drawn up before either was added. The grid is nine similarity functions × four scales × seven safeguards = 252 configurations, plus twelve baselines: 264 in all. The base rule of Section 3 — tent similarity, three-point scale, projection safeguard with its multiplier declared — is one entry of that grid, fixed by the theory rather than chosen from the ranking; the constant-free earned variant of §3.1 is shown beside it. Chandrupatla's own method and Dekker's are among the baselines; an earlier version of these tables was drawn up before either was added.
**Table 2.** Alefeld–Potra–Shi, 154 problems, out of 264 configurations. Places by failures first, then total. **Table 2.** Alefeld–Potra–Shi, 154 problems, out of 264 configurations. Places by failures first, then total.
@@ -209,7 +209,7 @@ The grid is nine similarity functions × four scales × seven safeguards = 252 c
|---|---|---|---|---|---| |---|---|---|---|---|---|
| 1 | Chandrupatla | no | 153/154 | 2787 | 0 | | 1 | Chandrupatla | no | 153/154 | 2787 | 0 |
| 2 | the same rule with no safeguard at all | no | 153/154 | 2806 | 0 | | 2 | the same rule with no safeguard at all | no | 153/154 | 2806 | 0 |
| **3** | **proposed: tent, 3-point, projection ($c=2$)** | **no** | 153/154 | **2806** | 0 | | **3** | **base rule: tent, 3-point, projection ($c=2$)** | **no** | 153/154 | **2806** | 0 |
| 4 | TOMS 748 | yes | 153/154 | 2820 | 0 | | 4 | TOMS 748 | yes | 153/154 | 2820 | 0 |
| 5 | Brent | yes | 153/154 | 2889 | 0 | | 5 | Brent | yes | 153/154 | 2889 | 0 |
| 12 | Dekker | no | 153/154 | 3158 | 0 | | 12 | Dekker | no | 153/154 | 3158 | 0 |
@@ -221,7 +221,7 @@ The grid is nine similarity functions × four scales × seven safeguards = 252 c
| 79 | bisection | no | 153/154 | 7530 | 0 | | 79 | bisection | no | 153/154 | 7530 | 0 |
| 244 | false position | no | 127/154 | 10560 | — | | 244 | false position | no | 127/154 | 10560 | — |
The proposed rule and the same rule without any safeguard tie at 2806: the projection never binds on this set. By total, Chandrupatla's method is first with 2787, 0.7% fewer — the same order of margin as the 0.5% by which the proposed rule leads TOMS 748, which we read as a tie. Problem by problem the picture is the other way round: on the problems both solve the proposed rule beats Chandrupatla 87/24/42 (wins/ties/losses; exact two-sided sign test $p=9\cdot10^{-5}$), TOMS 748 86/16/51, Brent 102/11/40, ITP at its recommended constants 132/3/18, the per-problem ITP oracle 121/4/28, and bisection 152/1/0. It wins twice as many problems as it loses against Chandrupatla and trails him in total because its losses are the larger ones. The constant-free variant goes 79/3/71 against Chandrupatla ($p=0.57$, a tie in problems), 77/9/67 against TOMS 748 and 78/5/70 against Brent, and loses on the total to all three. The base rule and the same rule without any safeguard tie at 2806: the projection never binds on this set. By total, Chandrupatla's method is first with 2787, 0.7% fewer — the same order of margin as the 0.5% by which the base rule leads TOMS 748, which we read as a tie. Problem by problem the picture is the other way round: on the problems both solve the base rule beats Chandrupatla 87/24/42 (wins/ties/losses; exact two-sided sign test $p=9\cdot10^{-5}$), TOMS 748 86/16/51, Brent 102/11/40, ITP at its recommended constants 132/3/18, the per-problem ITP oracle 121/4/28, and bisection 152/1/0. It wins twice as many problems as it loses against Chandrupatla and trails him in total because its losses are the larger ones. The constant-free variant goes 79/3/71 against Chandrupatla ($p=0.57$, a tie in problems), 77/9/67 against TOMS 748 and 78/5/70 against Brent, and loses on the total to all three.
**Table 3.** Chandrupatla, 45 problems, brackets up to $10^{12}$ wide, out of 264 configurations. **Table 3.** Chandrupatla, 45 problems, brackets up to $10^{12}$ wide, out of 264 configurations.
@@ -229,17 +229,17 @@ The proposed rule and the same rule without any safeguard tie at 2806: the proje
|---|---|---|---|---|---| |---|---|---|---|---|---|
| 1 | similarity, $1-\sqrt{\lvert z\rvert}$, bracket scale, projection | no | **41/45** | 4516 | 0 | | 1 | similarity, $1-\sqrt{\lvert z\rvert}$, bracket scale, projection | no | **41/45** | 4516 | 0 |
| 2 | Chandrupatla | no | 40/45 | 2441 | 0 | | 2 | Chandrupatla | no | 40/45 | 2441 | 0 |
| 3 | ITP, per-problem oracle | yes | 40/45 | 2611 | 0 | | 3 | ITP, per-problem oracle | yes | 40/45 | 2647 | 0 |
| 4 | similarity, $e^{-\lvert z\rvert}$, bracket scale, both guards | no | 40/45 | 2733 | 0 | | 4 | similarity, $e^{-\lvert z\rvert}$, bracket scale, both guards | no | 40/45 | 2736 | 0 |
| 6 | ITP, recommended constants | yes | 40/45 | 2857 | 0 | | 6 | ITP, recommended constants | yes | 40/45 | 2896 | 0 |
| 10 | constant-free variant: earned projection | no | 40/45 | 3020 | 0 | | 10 | constant-free variant: earned projection | no | 40/45 | 3020 | 0 |
| 16 | bisection | no | 40/45 | 3090 | 0 | | 16 | bisection | no | 40/45 | 3090 | 0 |
| **47** | **proposed: tent, 3-point, projection ($c=2$)** | **no** | 40/45 | **3220** | 0 | | **45** | **base rule: tent, 3-point, projection ($c=2$)** | **no** | 40/45 | **3220** | 0 |
| 164 | TOMS 748 | yes | 40/45 | 4000 | 15 | | 159 | TOMS 748 | yes | 40/45 | 4000 | 15 |
| 226 | Brent | yes | 38/45 | 4115 | 18 | | 227 | Brent | yes | 38/45 | 4115 | 18 |
| 228 | the same rule with no safeguard at all | no | 35/45 | 4104 | 10 | | 228 | the same rule with no safeguard at all | no | 35/45 | 4104 | 10 |
The set's nominal winner is a similarity configuration that solves one problem more than anything else, 41 of 45, at a worse total; ranking by failures first puts it on top, and we report it as such rather than by the total that would flatter our proposal. Here Chandrupatla's method is genuinely the stronger: it beats the proposed rule 26 problems to 9 ($p=0.006$) and by 3220 against 2441 in total. The proposed rule beats Brent 30/4/4 and TOMS 748 31/1/8 — both of which exceed the $2\times$ bound on 18 and 15 problems — and loses to ITP 17/0/23 and to the ITP oracle 16/0/24. The wide-bracket set is where the multiplier matters (Table 1a) and where the constant-free variant is the cheaper form, 3020 against 3220. Over both sets the proposed rule needs 6026 and the constant-free variant 6588, against 5228 for Chandrupatla, 5871 for the ITP oracle, 6820 for TOMS 748 and 7004 for Brent. The set's nominal winner is a similarity configuration that solves one problem more than anything else, 41 of 45, at a worse total; ranking by failures first puts it on top, and we report it as such rather than by the total that would flatter our proposal. Here Chandrupatla's method is genuinely the stronger: it beats the base rule 26 problems to 9 ($p=0.006$) and by 3220 against 2441 in total. The proposed rule beats Brent 30/4/4 and TOMS 748 31/1/8 — both of which exceed the $2\times$ bound on 18 and 15 problems — and loses to ITP 17/0/23 and to the ITP oracle 16/0/24. The wide-bracket set is where the multiplier matters (Table 1a) and where the constant-free variant is the cheaper form, 3020 against 3220. Over both sets the base rule needs 6026 and the constant-free variant 6588, against 5228 for Chandrupatla, 5907 for the ITP oracle, 6820 for TOMS 748 and 7004 for Brent.
### 5.1 What the guarantee costs ### 5.1 What the guarantee costs
@@ -248,23 +248,23 @@ It depends on which bound is bought. Against the identical rule with no safeguar
| | solved | total evals | runs over the $2\times$ bound | | | solved | total evals | runs over the $2\times$ bound |
|---|---|---|---| |---|---|---|---|
| APS, no safeguard | 153/154 | 2806 | 0 | | APS, no safeguard | 153/154 | 2806 | 0 |
| APS, projection — proposed ($2\times$ bisection) | 153/154 | 2806 | 0 | | APS, projection — base rule ($2\times$ bisection) | 153/154 | 2806 | 0 |
| APS, earned projection — constant-free (bisection + 1 step) | 153/154 | 3568 | 0 | | APS, earned projection — constant-free (bisection + 1 step) | 153/154 | 3568 | 0 |
| Chandrupatla, no safeguard | 35/45 | 4104 | 10 | | Chandrupatla, no safeguard | 35/45 | 4104 | 10 |
| Chandrupatla, projection — proposed | 40/45 | 3220 | 0 | | Chandrupatla, projection — base rule | 40/45 | 3220 | 0 |
| Chandrupatla, earned projection — constant-free | **40/45** | **3020** | **0** | | Chandrupatla, earned projection — constant-free | **40/45** | **3020** | **0** |
The proposed projection never binds on the canonical set, so its totals are identical to the last evaluation; on the wide-bracket set it solves five more problems for 21% fewer evaluations. The earned projection promises twice as much — a worst case of bisection plus one step instead of twice bisection — and pays for it on the canonical set, 762 evaluations or 27%, while on the wide-bracket set it is the cheapest of the three. Both are the opposite of the usual trade on at least one set, and that is the point of projecting rather than replacing: the two safeguards that replace cost 7260 and 7239 on Alefeld–Potra–Shi, against 2806. The projection of the base rule never binds on the canonical set, so its totals are identical to the last evaluation; on the wide-bracket set it solves five more problems for 21% fewer evaluations. The earned projection promises twice as much — a worst case of bisection plus one step instead of twice bisection — and pays for it on the canonical set, 762 evaluations or 27%, while on the wide-bracket set it is the cheapest of the three. Both are the opposite of the usual trade on at least one set, and that is the point of projecting rather than replacing: the two safeguards that replace cost 7260 and 7239 on Alefeld–Potra–Shi, against 2806.
### 5.2 Wall-clock time, and why it is not the cost model ### 5.2 Wall-clock time, and why it is not the cost model
Evaluations of $f$ are the cost model because in any real problem $f$ is the expensive part. Wall-clock time measures something narrower — the method's own arithmetic per step — and it is implementation- and language-bound. We report it because a reader will ask, and because what it shows is instructive. Evaluations of $f$ are the cost model because in any real problem $f$ is the expensive part. Wall-clock time measures something narrower — the method's own arithmetic per step — and it is implementation- and language-bound. We report it because a reader will ask, and because what it shows is instructive.
On the 199 problems as they stand, every $f$ being a formula of a few operations, the proposed rule is the **slowest** of the pure-Python methods compared, at 32.8 ms against 18.4 for Brent, 21.1 for ITP, 14.2 for Ridders and 22.9 for bisection — while using the fewest evaluations of all of them, 4991 against 5932, 5675, 6421 and 9474. Bisection, needing nearly twice the evaluations, finishes in two thirds of our time. On the 199 problems as they stand, every $f$ being a formula of a few operations, the base rule is the **slowest** of the pure-Python methods compared, at 32.8 ms against 18.4 for Brent, 21.1 for ITP, 14.2 for Ridders and 22.9 for bisection — while using the fewest evaluations of all of them, 4991 against 5932, 5675, 6421 and 9474. Bisection, needing nearly twice the evaluations, finishes in two thirds of our time.
Those evaluation counts are *raw*: they are what the timing loop actually spent, and a failed run contributes only the evaluations it made before the budget ran out. They are therefore not the totals of §5, where a failure is charged the full 200-evaluation budget so that no method can buy a low score by giving up — 4991 raw against 6026 charged for the proposed rule, 5932 against 6991 for Brent (our pure-Python implementation, which is what is timed; the tables use the library's `brentq`, 7004), 9474 against 10620 for bisection. Wall-clock time can only be compared against what was really executed, so the raw counts are the right companions to the milliseconds; every comparison in §5 uses the charged ones. Both are stated to avoid the appearance of two incompatible sets of numbers for the same methods. Those evaluation counts are *raw*: they are what the timing loop actually spent, and a failed run contributes only the evaluations it made before the budget ran out. They are therefore not the totals of §5, where a failure is charged the full 200-evaluation budget so that no method can buy a low score by giving up — 4991 raw against 6026 charged for the base rule, 5932 against 6991 for Brent (our pure-Python implementation, which is what is timed; the tables use the library's `brentq`, 7004), 9474 against 10620 for bisection. Wall-clock time can only be compared against what was really executed, so the raw counts are the right companions to the milliseconds; every comparison in §5 uses the charged ones. Both are stated to avoid the appearance of two incompatible sets of numbers for the same methods.
That inversion is the point. Making $f$ progressively more expensive by a controlled amount of arithmetic and timing the sweep directly — nothing subtracted, nothing modelled — the proposed rule overtakes ITP once one call to $f$ costs about 9 µs and Brent at about 20 µs, which on this machine is of the order of a hundred arithmetic operations. Below that the ranking is decided by per-step overhead; above it, by evaluations. That inversion is the point. Making $f$ progressively more expensive by a controlled amount of arithmetic and timing the sweep directly — nothing subtracted, nothing modelled — the base rule overtakes ITP once one call to $f$ costs about 9 µs and Brent at about 20 µs, which on this machine is of the order of a hundred arithmetic operations. Below that the ranking is decided by per-step overhead; above it, by evaluations.
Three caveats, all of them limitations of the measurement rather than of the methods. Timings vary by tens of percent between runs even on an idle machine. An attempt to separate our per-step cost into "algorithm" and "Python call overhead", by timing a flattened rewrite of the same rule, produced a variant that diverged from the original on 42 of the 199 problems and was therefore discarded rather than quoted; the question stays open. And an earlier version of this measurement estimated a per-evaluation overhead by subtracting the measured cost of $f$, which returned *negative* overheads for four of six methods — an impossibility that condemned the estimator, and the reason nothing is subtracted here. Three caveats, all of them limitations of the measurement rather than of the methods. Timings vary by tens of percent between runs even on an idle machine. An attempt to separate our per-step cost into "algorithm" and "Python call overhead", by timing a flattened rewrite of the same rule, produced a variant that diverged from the original on 42 of the 199 problems and was therefore discarded rather than quoted; the question stays open. And an earlier version of this measurement estimated a per-evaluation overhead by subtracting the measured cost of $f$, which returned *negative* overheads for four of six methods — an impossibility that condemned the estimator, and the reason nothing is subtracted here.
@@ -276,12 +276,12 @@ Corollaries 1–3 predict an ordering of the nine similarity functions and of th
| scale | $c=1$ (linear approach) | $c=0$ (quadratic approach) | | scale | $c=1$ (linear approach) | $c=0$ (quadratic approach) |
|---|---|---| |---|---|---|
| 3-point derived | **6809** | 22294 | | 3-point derived | **6893** | 22315 |
| 2-point derived | 6906 | 22167 | | 2-point derived | 6981 | 22206 |
| bracket | 10263 | 19137 | | bracket | 10279 | 19127 |
| start (chosen) | 16102 | 15345 | | start (chosen) | 16102 | 15345 |
Ranked individually and best over scales, the similarities come out $1-|z|$ (6496), $e^{-|z|}$ (6822), $1/(1+|z|)$ (7038), $(1+|z|)^{-2}$ (9502), $1-\sqrt{|z|}$ (10497), $1-|z|^{1/3}$ (11941), $e^{-z^2}$ (14314), $1/(1+z^2)$ (15102), $1/\sqrt{1+z^2}$ (16394); the scales come out 3-point (6496), 2-point (6628), bracket (9081), start (14540). Both orderings are those the law predicts, and both were predicted before the grid was run. Ranked individually and best over scales, the similarities come out $1-|z|$ (6560), $e^{-|z|}$ (6895), $1/(1+|z|)$ (7118), $(1+|z|)^{-2}$ (9578), $1-\sqrt{|z|}$ (10546), $1-|z|^{1/3}$ (12002), $e^{-z^2}$ (14307), $1/(1+z^2)$ (15102), $1/\sqrt{1+z^2}$ (16394); the scales come out 3-point (6560), 2-point (6702), bracket (9107), start (14540). Both orderings are those the law predicts, and both were predicted before the grid was run.
--- ---
@@ -299,7 +299,7 @@ The mechanism is step *quality*. Reconstructing each method's bracket from the s
Everything above reads the similarity in one place: the *length* of the step, $(1-S(z))$ times the distance to the far end. But a bracketing iteration takes several decisions per step, and the similarity was not consulted in any of the others: which end counts as far (decided by distance), which points the local slope is estimated from (decided by recency), and whether the step is worth taking at all (decided after the fact, by the safeguard). Each of those is a place where a similarity can be read, and the placement turns out to matter more than the form of $S$. Everything above reads the similarity in one place: the *length* of the step, $(1-S(z))$ times the distance to the far end. But a bracketing iteration takes several decisions per step, and the similarity was not consulted in any of the others: which end counts as far (decided by distance), which points the local slope is estimated from (decided by recency), and whether the step is worth taking at all (decided after the fact, by the safeguard). Each of those is a place where a similarity can be read, and the placement turns out to matter more than the form of $S$.
Three readings were added to the proposed rule of §3 (tent similarity, three-point scale), each parameter-free and each measured on the protocol of §4; every number below is re-checked against its own sweep file by `verify_article.py`, and every configuration in Table 5 keeps the $2\lceil\log_2(w_0/\varepsilon_x)\rceil+3$ guarantee (0 violations) and solves 193 of the 199 problems. Three readings were added to the base rule of §3 (tent similarity, three-point scale), each parameter-free and each measured on the protocol of §4; every number below is re-checked against its own sweep file by `verify_article.py`, and every configuration in Table 5 keeps the $2\lceil\log_2(w_0/\varepsilon_x)\rceil+3$ guarantee (0 violations) and solves 193 of the 199 problems.
Where a safeguard other than the projection of §3.1 appears, it is one of the grid's. *safe* is the projection preceded by a step-length test — a step not at most half the step taken two evaluations earlier is replaced by a halving — with the projection still carrying the bound. *credit* replaces the scheduled allowance of (3) by one earned step by step: a surplus is banked whenever a step shrinks the bracket by more than half and drawn on when it shrinks it by less, which bounds the run by bisection plus one step. *bracket* and *both* are the replacing safeguards of §3.1, which keep a bound at the price of the order; *step* alone and *none* carry no bound. Where a safeguard other than the projection of §3.1 appears, it is one of the grid's. *safe* is the projection preceded by a step-length test — a step not at most half the step taken two evaluations earlier is replaced by a halving — with the projection still carrying the bound. *credit* replaces the scheduled allowance of (3) by one earned step by step: a surplus is banked whenever a step shrinks the bracket by more than half and drawn on when it shrinks it by less, which bounds the run by bisection plus one step. *bracket* and *both* are the replacing safeguards of §3.1, which keep a bound at the price of the order; *step* alone and *none* carry no bound.
@@ -311,19 +311,19 @@ Where a safeguard other than the projection of §3.1 appears, it is one of the g
| configuration (all with the guarantee, 193/199) | APS-154 | CHA-45 | both | | configuration (all with the guarantee, 193/199) | APS-154 | CHA-45 | both |
|---|---|---|---| |---|---|---|---|
| proposed: tent, 3-point, projection $c=2$ (§3) | 2806 | 3220 | 6026 | | base rule: tent, 3-point, projection $c=2$ (§3) | 2806 | 3220 | 6026 |
| constant-free variant: earned projection (§3.1) | 3568 | 3020 | 6588 | | constant-free variant: earned projection (§3.1) | 3568 | 3020 | 6588 |
| (1) trust before the step, projection | 2848 | 3074 | 5922 | | (1) trust before the step, projection | 2848 | 3114 | 5962 |
| (1)+(2) points chosen by shape, *safe* | **2527** | 3108 | 5635 | | (1)+(2) points chosen by shape, *safe* | **2527** | 3126 | 5653 |
| (1)+(3) far end by dissimilarity, projection | 2726 | **2785** | **5511** | | (1)+(3) far end by dissimilarity, projection | 2726 | **2799** | **5525** |
| (1)+(2)+(3), *safe* | 2884 | 2859 | 5743 | | (1)+(2)+(3), *safe* | 2884 | 2871 | 5755 |
| Chandrupatla | 2787 | 2441 | 5228 | | Chandrupatla | 2787 | 2441 | 5228 |
| TOMS 748 | 2820 | 4000 | 6820 | | TOMS 748 | 2820 | 4000 | 6820 |
| ITP, per-problem oracle | 3260 | 2611 | 5871 | | ITP, per-problem oracle | 3260 | 2647 | 5907 |
Two results here are worth stating plainly. First, the canonical set improves from 2806 to **2527**, which is below every method measured, including Chandrupatla's 2787, with the worst-case guarantee intact. It hardly feels the declared multiplier of §3.1: 2527 for every multiplier from 1.5 to 4, 2541 at 1.25 (`measure_records_vs_multiplier.py`). Second, on the two sets together the 5511 of reading (3) passes ITP's oracle (5871) but not Chandrupatla (5228): the remaining gap is entirely on the wide-bracket families, where Chandrupatla needs 2441 against our 2683 (reading (3) under *safe*). Two results here are worth stating plainly. First, the canonical set improves from 2806 to **2527**, which is below every method measured, including Chandrupatla's 2787, with the worst-case guarantee intact. It hardly feels the declared multiplier of §3.1: 2527 for every multiplier from 1.5 to 4, 2541 at 1.25 (`measure_records_vs_multiplier.py`). Second, on the two sets together the 5525 of reading (3) passes ITP's oracle (5907) but not Chandrupatla (5228): the remaining gap is entirely on the wide-bracket families, where Chandrupatla needs 2441 against our 2695 (reading (3) under *safe*).
The readings do not compose. Taken together, (2) and (3) give 2884 and 2859 — worse than either alone. Two selections that are each an improvement interfere, which is a reason to measure composition rather than assume it. The readings do not compose. Taken together, (2) and (3) give 2884 and 2871 — worse than either alone on the canonical set, and on the wide-bracket set worse than (3) alone. Two selections that are each an improvement interfere, which is a reason to measure composition rather than assume it.
Under the constant-free earned projection the same readings gain far less. Reading (1) gives 3507 and 2997, (1)+(2) 3755 and 3021, (1)+(3) 3857 and 3002, all three together 4354 and 3037, against 3568 and 3020 for the constant-free variant itself: the earned budget binds early on the canonical problems, and what the readings buy under the projection is mostly room that the earned budget does not grant. Under the constant-free earned projection the same readings gain far less. Reading (1) gives 3507 and 2997, (1)+(2) 3755 and 3021, (1)+(3) 3857 and 3002, all three together 4354 and 3037, against 3568 and 3020 for the constant-free variant itself: the earned budget binds early on the canonical problems, and what the readings buy under the projection is mostly room that the earned budget does not grant.
@@ -333,7 +333,7 @@ Everything above varies *where* the similarity is read while keeping one functio
$$z \;=\; \frac{|f(x)|}{|f(x_\mathrm{far})|} \;=\; \Bigl(\frac{e}{E}\Bigr)^{m}, \qquad\text{so}\qquad z^{1/m} \;=\; \frac{e}{E}, \tag{5}$$ $$z \;=\; \frac{|f(x)|}{|f(x_\mathrm{far})|} \;=\; \Bigl(\frac{e}{E}\Bigr)^{m}, \qquad\text{so}\qquad z^{1/m} \;=\; \frac{e}{E}, \tag{5}$$
and under the ratio similarity $S=1/(1+|z|)$ the step fraction is $z/(1+z)$, which is exactly inverse linear interpolation. False position therefore reads a dimensionless ratio *at order one* on an approach of order $m$: its three-century-old stall is a mismatch between the similarity function and the place it is read in. The exponent $1/m$ is not a constant — $m=1/(1-ff''/f'^2)$ comes from three evaluations already paid for, as in item 5 of §8, and is 1 whenever the power model does not apply. and under the ratio similarity $S=1/(1+|z|)$ the step fraction is $z/(1+z)$, which is exactly inverse linear interpolation. False position therefore reads a dimensionless ratio *at order one* on an approach of order $m$: its three-century-old stall is a mismatch between the similarity function and the place it is read in. The exponent $1/m$ is not a constant — $m=1/(1-ff''/f'^2)$ comes from three evaluations already paid for, as in item 5 of §10, and is 1 whenever the power model does not apply.
Measured over the 252 cells of the grid, the correction behaves exactly as that reading predicts and not at all as a universal improvement. Paired inside each (function, safeguard) cell of the far-end reading it is cheaper in 29 of 60 cells — indistinguishable from a coin. But in the one pairing where that reading *is* exact inverse interpolation, the ratio similarity, it is cheaper under all seven safeguards: Measured over the 252 cells of the grid, the correction behaves exactly as that reading predicts and not at all as a universal improvement. Paired inside each (function, safeguard) cell of the far-end reading it is cheaper in 29 of 60 cells — indistinguishable from a coin. But in the one pairing where that reading *is* exact inverse interpolation, the ratio similarity, it is cheaper under all seven safeguards:
@@ -341,15 +341,15 @@ Measured over the 252 cells of the grid, the correction behaves exactly as that
| safeguard | APS, $m=1$ | APS, measured $m$ | CHA, $m=1$ | CHA, measured $m$ | | safeguard | APS, $m=1$ | APS, measured $m$ | CHA, $m=1$ | CHA, measured $m$ |
|---|---|---|---|---| |---|---|---|---|---|
| both | 4522 | **3675** | 3387 | **3216** | | both | 4522 | **3675** | 3406 | **3241** |
| bracket | 4606 | **3542** | 3571 | **3303** | | bracket | 4606 | **3542** | 3602 | **3359** |
| credit | 5190 | **4686** | 3013 | **2884** | | credit | 5190 | **4686** | 3013 | **2884** |
| projection | 6932 | **6364** | 4794 | **4559** | | projection | 6932 | **6364** | 4789 | **4554** |
| safe | 5987 | **5229** | 4108 | **3923** | | safe | 5987 | **5229** | 4134 | **3954** |
| step | 6435 | **5551** | 4257 | **4022** | | step | 6435 | **5551** | 4287 | **4068** |
| none | 10676 | **10043** | 8265 | **7794** | | none | 10676 | **10043** | 8265 | **7794** |
Two limits must be stated with it. The estimator is *biased low*: on a pure cube, with no noise at all, it returns 2.830 rather than 3, because a parabola through three points carries only the second difference. The bias is towards $m=1$, that is towards the uncorrected reading, which is the harmless direction, but it is a bias. And the correction does not rescue the far-end reading as a method: the best cell it reaches on the wide-bracket set is 2884, against 2683 for reading (3) above and 2423 for Chandrupatla. In the *slope* reading of §3 the same exponent is harmful, $2806\to2854$, which is the same statement read from the other side — a function that does not belong to a place does not become right by being applied there. Two limits must be stated with it. The estimator is *biased low*: on a pure cube, with no noise at all, it returns 2.830 rather than 3, because a parabola through three points carries only the second difference. The bias is towards $m=1$, that is towards the uncorrected reading, which is the harmless direction, but it is a bias. And the correction does not rescue the far-end reading as a method: the best cell it reaches on the wide-bracket set is 2884, against 2695 for reading (3) above and 2441 for Chandrupatla. In the *slope* reading of §3 the same exponent is harmful, $2806\to2854$, which is the same statement read from the other side — a function that does not belong to a place does not become right by being applied there.
### 7.2 The decision place ### 7.2 The decision place
@@ -357,9 +357,9 @@ Three places have now been measured: the step length, the far end, and the point
Three readings of that place were measured, each on quantities already in hand and each without a constant. Two are ours: refuse when the configuration is less like a linear one than the iterate is off-centre, $|\varphi-\xi|>\min(\xi,1-\xi)$ ("defect"); and refuse when the configuration's similarity to linear falls below the iterate's similarity to the root, $S(|\varphi-\xi|)<S(z)$, with the *same* $S$ in both places ("simpair"). The third is *Chandrupatla's own band*, placed inside our step rule. It is not a proposal; it is an instrument, and it answers whether the remaining gap lives in this place. Three readings of that place were measured, each on quantities already in hand and each without a constant. Two are ours: refuse when the configuration is less like a linear one than the iterate is off-centre, $|\varphi-\xi|>\min(\xi,1-\xi)$ ("defect"); and refuse when the configuration's similarity to linear falls below the iterate's similarity to the root, $S(|\varphi-\xi|)<S(z)$, with the *same* $S$ in both places ("simpair"). The third is *Chandrupatla's own band*, placed inside our step rule. It is not a proposal; it is an instrument, and it answers whether the remaining gap lives in this place.
In total, no. With Chandrupatla's band in our step, the wide-bracket set costs 3066 under the projection and 2899 under *credit*, against his 2441, while the canonical set rises from 2806 to 5432. The band is not idle — it refuses 63.6% of steps — so this is a decision that was taken and did not pay *in total*. Per family it did pay, and where: it closes almost the whole gap on the flat families and gives back more than that on the families where our step is good. §7.4 takes this apart; the short form is that the decision place does hold most of the gap, but no reading measured so far makes that decision correctly for *our* step. In total, no. With Chandrupatla's band in our step, the wide-bracket set costs 3059 under the projection and 2892 under *credit*, against his 2441, while the canonical set rises from 2806 to 5432. The band is not idle — it refuses 63.5% of steps — so this is a decision that was taken and did not pay *in total*. Per family it did pay, and where: it closes almost the whole gap on the flat families and gives back more than that on the families where our step is good. §7.4 takes this apart; the short form is that the decision place does hold most of the gap, but no reading measured so far makes that decision correctly for *our* step.
Our own readings do not close it either (best 2868 on the wide-bracket set), but "defect" sets a new best on the canonical set: **2523** at 153/154 under the proposed projection, below the 2527 of reading (2) and below every method measured, with the guarantee intact — and, unlike 2527, the same for every multiplier from 1.25 to 4. Under the earned projection it gives 3545 and 2949, the best total over both sets of any constant-free configuration measured (6494 against 6588). It refuses only 7.0% of steps, the fewest of the three. Over both sets it costs 5733 against the 5511 of reading (3), because it gives back on the wide brackets (3210) what it gains on the canonical problems — so it is a second point on the same trade, not a replacement. Our own readings do not close it either (best 2897 on the wide-bracket set), but "defect" sets a new best on the canonical set: **2523** at 153/154 under the projection of the base rule, below the 2527 of reading (2) and below every method measured, with the guarantee intact — and, unlike 2527, the same for every multiplier from 1.25 to 4. Under the earned projection it gives 3545 and 2949 (6494 against 6588), the best of the readings of this section without a constant; the flat regime of §8 does better still. It refuses only 6.6% of steps, the fewest of the three. Over both sets it costs 5733 against the 5525 of reading (3), because it gives back on the wide brackets (3210) what it gains on the canonical problems — so it is a second point on the same trade, not a replacement.
### 7.3 Six problems of the two sets are scored unsolved for every method ### 7.3 Six problems of the two sets are scored unsolved for every method
@@ -372,11 +372,11 @@ The consequence is arithmetic. Each such problem charges the full budget of 200
| method | APS as scored | APS re-scored | CHA as scored | CHA re-scored | | method | APS as scored | APS re-scored | CHA as scored | CHA re-scored |
|---|---|---|---|---| |---|---|---|---|---|
| ours, (1)+(2) points by shape | **2527** | **2337** | 3108 | 2159 | | ours, (1)+(2) points by shape | **2527** | **2337** | 3108 | 2159 |
| ours, proposed (projection) | 2806 | 2634 | 3220 | 2357 | | ours, base rule (projection) | 2806 | 2634 | 3220 | 2357 |
| Chandrupatla | 2787 | 2595 | **2441** | **1505** | | Chandrupatla | 2787 | 2595 | **2441** | **1505** |
| TOMS 748 | 2820 | 2636 | 4000 | 3088 | | TOMS 748 | 2820 | 2636 | 4000 | 3088 |
| Brent | 2889 | 2707 | 4115 | 3238 | | Brent | 2889 | 2707 | 4115 | 3238 |
| ITP | 3957 | 3767 | 2857 | 1907 | | ITP | 3957 | 3767 | 2896 | 1907 |
| bisection | 7530 | 7338 | 3090 | 2136 | | bisection | 7530 | 7338 | 3090 | 2136 |
### 7.4 Where the wide-bracket limit actually is ### 7.4 Where the wide-bracket limit actually is
@@ -389,19 +389,142 @@ Nor is it that the step fails to be relative to the bracket. With the tent simil
What differs on `fun1` is how much each probe removes. Ours shrinks the bracket by 0.93 halvings per evaluation there, Chandrupatla's by 2.30. On a wide bracket of a convex function the Newton step systematically undershoots, because a linear model of the value axis cannot see the curvature that separates the iterate from the root; a model that carries the curvature — inverse quadratic interpolation — lands far closer. What differs on `fun1` is how much each probe removes. Ours shrinks the bracket by 0.93 halvings per evaluation there, Chandrupatla's by 2.30. On a wide bracket of a convex function the Newton step systematically undershoots, because a linear model of the value axis cannot see the curvature that separates the iterate from the root; a model that carries the curvature — inverse quadratic interpolation — lands far closer.
That mechanism is right for `fun1` and *wrong as a statement about the whole gap*. Replaying our own trajectories on the 33 problems where we lose, and placing both models on the *same* evaluations — one extra evaluation each, from the same state — splits the 244 evaluations of the gap in two. On `fun1` (58 of them, about a quarter) inverse quadratic interpolation from our own three points removes far more of the bracket than our step did: 10.37 halvings against 0.62 on the $2\times10^4$-wide bracket. There the gap is the order of the model, and the reason is structural: our step $x+(1-S)(x_\mathrm{far}-x)=S\,x+(1-S)\,x_\mathrm{far}$ is a convex combination of two points, while the quadratic interpolant's Lagrange weights at 0 always include exactly one *negative* weight when the triple brackets the root (verified on all 428 non-degenerate states; in the other five the negative weight underflowed to $-0$). A similarity in $[0,1]$ cannot produce a negative weight — Proposition 1 extended from two points to three. That mechanism is right for `fun1` and *wrong as a statement about the whole gap*. Replaying our own trajectories on the 33 problems where we lose, and placing both models on the *same* evaluations — one extra evaluation each, from the same state — splits the 256 evaluations of the gap in two. On `fun1` (58 of them, about a quarter) inverse quadratic interpolation from our own three points removes far more of the bracket than our step did: 10.37 halvings against 0.62 on the $2\times10^4$-wide bracket. There the gap is the order of the model, and the reason is structural: our step $x+(1-S)(x_\mathrm{far}-x)=S\,x+(1-S)\,x_\mathrm{far}$ is a convex combination of two points, while the quadratic interpolant's Lagrange weights at 0 always include exactly one *negative* weight when the triple brackets the root (verified on all 428 non-degenerate states; in the other three the negative weight underflowed to $-0$). A similarity in $[0,1]$ cannot produce a negative weight — Proposition 1 extended from two points to three.
But 160 of the 244 — two thirds — sit on `fun3`–`fun6`, which are pure powers of order 3, 5, 9 and 19, and there *no* interpolating model works: our step removes 0.41–0.81 halvings of the bracket per evaluation, inverse quadratic interpolation from the same points only 0.01–0.17. Chandrupatla does not win those families with his model — his traced run bisects 92, 96, 100 and 100% of his steps. We lose them because our step is slower than bisection there and our guarantee, at most twice bisection, licenses exactly that. His band inside our step confirms it family by family: under the projection it takes `fun4`, `fun5`, `fun6` from 573, 456, 456 to 296, 239, 235 — against his own 297, 233, 233 — and costs +164, +111, +170, +144 on `fun1`, `fun2`, `fun8`, `fun9`, where it refuses steps that were good. But 172 of the 256 — two thirds — sit on `fun3`–`fun6`, which are pure powers of order 3, 5, 9 and 19, and there *no* interpolating model works: our step removes 0.41–0.75 halvings of the bracket per evaluation, inverse quadratic interpolation from the same points only 0.01–0.17. Chandrupatla does not win those families with his model — his traced run bisects 92, 96, 100 and 100% of his steps. We lose them because our step is slower than bisection there and our guarantee, at most twice bisection, licenses exactly that. His band inside our step confirms it family by family: under the projection it takes `fun4`, `fun5`, `fun6` from 573, 456, 456 to 296, 239, 228 — against his own 297, 233, 233 — and costs +164, +111, +170, +144 on `fun1`, `fun2`, `fun8`, `fun9`, where it refuses steps that were good.
So most of what remains is not the order of the model but the decision *when to give the model up*, and it is open because every detector measured so far confounds "the model is useless here" with something else: the band with "the configuration is not shaped for inverse quadratic interpolation", bracket progress with "the step has not moved the bracket yet" (4449 on the canonical set, §8), and the local order with nothing at all — $m\ge2$ is exactly the condition under which a tangent step loses to a halving, since it lands at $e(1-1/m)$, and it is clean (0.2% of canonical states) but blind: it reports $m\ge2$ on only 5.8% of states of families whose order is by construction 3 to 19. For the `fun1` part, three parameter-free ways round the model order have been measured and all three fail in the same way, buying the wide brackets at the price of the canonical set: a fixed fraction of the bracket (the cube-root similarity), a logarithmic change of variable, and the curvature-corrected scale of §8 item 5. The fourth way is to model the curvature directly, which is inverse quadratic interpolation — a different method rather than another reading of this one. So most of what remains is not the order of the model but the decision *when to give the model up*, and it is open because every detector measured so far confounds "the model is useless here" with something else: the band with "the configuration is not shaped for inverse quadratic interpolation", bracket progress with "the step has not moved the bracket yet" (4449 on the canonical set, §10), and the local order with nothing at all — $m\ge2$ is exactly the condition under which a tangent step loses to a halving, since it lands at $e(1-1/m)$, and it is clean (0.2% of canonical states) but blind: it reports $m\ge2$ on none of the states of families whose order is by construction 3 to 19. For the `fun1` part, three parameter-free ways round the model order have been measured and all three fail in the same way, buying the wide brackets at the price of the canonical set: a fixed fraction of the bracket (the cube-root similarity), a logarithmic change of variable, and the curvature-corrected scale of §10 item 5. The fourth way is to model the curvature directly, which is inverse quadratic interpolation — a different method rather than another reading of this one.
On the re-scored wide-bracket set of Table 7 our shape reading (2159) is *worse* than bisection (2136); only the dissimilarity reading (1740) is clearly ahead, which is the same statement seen from the other end: where the step cannot march, the reading that helps least is the one that only improves the local model. On the re-scored wide-bracket set of Table 7 our shape reading (2159) is *worse* than bisection (2136); only the dissimilarity reading (1740) is clearly ahead, which is the same statement seen from the other end: where the step cannot march, the reading that helps least is the one that only improves the local model.
Every statement in §§7.3–7.4 is reproduced by `diag_rescore_cha.py`, `diag_rescore_aps.py`, `diag_fun7_root.py`, `diag_cha_gap.py`, `diag_model_order.py`, `diag_model_order_checks.py`, `diag_flat_detectable.py` and `diag_band_by_family.py`, whose outputs are kept beside them. Every statement in §§7.3–7.4 is reproduced by `diag_rescore_cha.py`, `diag_rescore_aps.py`, `diag_fun7_root.py`, `diag_cha_gap.py`, `diag_model_order.py`, `diag_model_order_checks.py`, `diag_flat_detectable.py` and `diag_band_by_family.py`, whose outputs are kept beside them.
## 8. The flat regime, recognised by analogy
§7.4 left one decision open: *when to give the model up*. On the pure powers `fun3`–`fun6` the right move is to halve, Chandrupatla halves on up to all of his steps, and every reading of a single state measured so far confuses "the model is useless here" with something else. This section closes that decision, and the reading that closes it is not a similarity of the current state to a prototype but a similarity of the run to *its own past* — an analogy in Pólya's sense [8], two situations agreeing in more than one relation. Every rule below was pre-registered before its code and its run, with a stop rule; the rejected ones are listed in §10 with their numbers.
### 8.1 The flag: a promise that was not kept
A tangent step on an approach of local order $m$ lands at $e(1-1/m)$ and leaves the residual $r=|f_\text{new}/f_\text{old}|=(1-1/m)^m$ on the same side of the root. It beats a halving exactly when $|1-1/m|<\tfrac12$, that is for $\tfrac23<m<2$. At the upper end $r=(1-\tfrac12)^2=\tfrac14$. So a model step that did not cross the root and left $r\ge\tfrac14$ is a *promise not kept*: the model is in the regime where a halving would have done better. The constant is bisection's $\tfrac12$, carried through the formula.
The flag sees the regime — on the flat families it rises on most model steps — but acted upon step by step it does not pay. Replacing the one flagged step by a halving costs the canonical set 2806 → 3029, because a simple root far from convergence also breaks its promises (the flag rises at least once on 142 of the 154 canonical problems). Every refinement of *when* to halve that reads the moment alone — twice in a row, the promise together with a creep in one direction, a halving that sticks once begun, a judgment of the evaluated point against the line through the bracket — trades one set for the other (§10, items 12–14).
### 8.2 The analogy: similarity of a run to its own past
What distinguishes a pure power from a simple root is not the shape of one configuration — `fun1` on a wide bracket looks as non-linear as $x^9$ — but what happens under zoom. A pure power $f=c(x-r)^m$ is similar to itself: zooming about the root by $L$ scales $x-r$ by $L$ and $f$ by $L^m$, so the *dimensionless configuration* of the last three points,
$$\xi=\frac{x_k-x_{k-1}}{x_{k-2}-x_{k-1}},\qquad \varphi=\frac{f_k-f_{k-1}}{f_{k-2}-f_{k-1}},$$
recurs as the iteration proceeds. At a simple root, zooming in makes $f$ look like its tangent, and the configuration tends to the *linear prototype* $\varphi=\xi$ instead. Two prototypes, then: the line, and the run's own past. The judgment is ordinal — is the current $(\xi,\varphi)$ nearer to some earlier configuration of this run than to the line? — with the plane's Euclidean distance and the perpendicular to the line, the one geometric choice in this section, declared as such.
Nearness of configurations is one relation. An analogy in the full sense needs a second, and the pair supplies it: if the analogous pair shrank $x$ by $L_x$ and $f$ by $L_f$, the power law requires $L_f=L_x^{\,m}$, so the order is *read from the analogy itself*,
$$m=\frac{\ln L_f}{\ln L_x}.\tag{6}$$
A chance resemblance at a simple root reads $m\approx1$; a pure power of order 5 reads 4.9. The regime is the one where a tangent step loses, $m\ge2$ (§8.1) — no new constant. On the traces of the base rule, at the moments the flag rises, the three conditions together hold on 3 of the 154 canonical problems, on all 20 flat problems, and on none of `fun2`, `fun8`, `fun9`.
**The analogy belongs to the run, the flag to the moment.** In the cycle the base rule runs on a pure power — undershoot, undershoot, crossing, a nearly empty step — the flag rises in the phases whose configuration does *not* recur (the empty step grows emptier every cycle), while the recurring phases have the flag down. Requiring both in one state delayed the entry on the flat problems to their thirteenth state on average. Once established, the analogy is therefore remembered for the run, and the regime is entered at the next unkept promise (eighth state on average).
**The translation limit.** The exponential is self-similar by *translation*, $e^{x-1}=e^x/e$: along its flank the step does not shrink while $f$ does, so (6) is undefined or negative. That is the limit $m\to\infty$ of (6), steeper than any power, and it is read as $m=\infty$: when an analogous pair shows $L_f<1\le L_x$. A high power far from its root is locally an exponential, $x^m=e^{m\ln x}$, and it was there, not on the flank of `fun9` it was built for, that the limit paid.
**Exit.** Inside the regime the step splits the bracket (§8.3). At every split the evaluated $f$ is judged against two predictions: the line through the bracket ends, $F_A(1-t)+F_Bt$ at the split fraction $t$, and 0. Nearer the line, the regime is left and the remembered analogy is cleared. A sticky halving without this exit cost the canonical set 6897; with it, 3125 — the exit is what makes a false entry cheap.
### 8.3 Where to split: the point from the order
Halving is the answer when nothing is known about the shape; inside the regime the order is known. For $|f|\propto|x-r|^m$ the ends of the bracket lie at distances in the ratio $|F_A|^{1/m}:|F_B|^{1/m}$ from the root, so the regime splits at
$$t=\frac{|F_A|^{1/m}}{|F_A|^{1/m}+|F_B|^{1/m}},\tag{7}$$
which is exact for a pure power and becomes the midpoint as $m\to\infty$. The order read from a *failed promise*, $(1-1/m)^m=r$, was tried first and gave $m=\infty$ in 163 of 174 entries, because the base step is not a pure tangent; the order read from the *analogy* is the one that works. With it the flat families of the wide-bracket set cost 743–847 evaluations against 1044 for pure bisection and 1068 for Chandrupatla.
### 8.4 Five more readings
**The half the step promises.** $S(z)\ge\tfrac12$ means a step of at most half the way to the far end: the model promises the root in the half of the bracket *near* $x$. The line through the bracket ends puts it nearer the end with the smaller $|f|$. When the far end has the smaller $|f|$ the two disagree about the half, and the evaluation halves. On a steep flank — a slope dominated by $f(81)=1.5\cdot10^{35}$ on `fun9.5` — this is the false promise "the root is here", and removing it alone takes the canonical set from 2806 to 2564.
**The sign contradiction.** The bracket says which way $f$ must go between its ends; the last two points say which way it goes here. Opposite signs — the local picture contradicts the bracket — and the evaluation halves. It is the cause of the `fun9` well: a near-cancelling end reads the root as close while $|f|$ doubles for seventeen steps.
**The repeated step pattern.** Two successive moves the same way, of similar length, mean the iterate creeps along a geometric series whose remainder is $\text{step}\cdot s/(1-s)$; the step is lengthened by $1/(1-s)$, with $s$ the similarity of successive step lengths, but only when the pattern of successive length ratios repeats with a period read from the data (the lag of highest mean similarity) and that similarity exceeds $\tfrac12$.
**The overshoot branch.** §8.1's inequality has a second branch, $m<\tfrac23$: a root of order below one, where the tangent step overshoots and the iterate oscillates about the root ($\sqrt{|x|}\operatorname{sign}x$: 84 evaluations of the base rule). The flag for it is the unkept promise *with* a sign change, $f_\text{new}/f_\text{old}\le-\tfrac14$, and an analogous pair reading $0<m\le\tfrac23$; the split (7) is again exact for a pure power. The exit judgment of §8.2 separates a flat root from a simple one; at a root of order below one $f$ is far from 0 on both sides and the exit fires falsely, so the memory of this branch is *not* cleared by it (measured on the development corpora: 19 evaluations with the memory kept, 65 without).
**Borrowed: the tolerance step.** Once the root is reached from one side the bracket's far end can stay far: on $\sin$ over $[3,4]$ the base rule reaches $|f|\approx10^{-16}$ in 7 evaluations and then halves the remaining $1.3\cdot10^{-7}$ down to the tolerance in 17 more. Dekker [9] and Brent [2] step at least the tolerance; we do the same, $\varepsilon_x/2$ towards the far end, when the model's step is shorter — but only after the model has *kept* its previous promise ($r<\tfrac14$), because at the start of a run a slope dominated by a huge far value promises the root at an end. This element is not ours and is named as such.
### 8.5 The proposed method
The method this paper proposes, **A′**, is the base rule of §3 — tent similarity, three-point scale, projection with the declared multiplier $c=2$ — with the regime of §8.2–8.3 (the analogy remembered, its translation limit, the split (7), the exit) and the five readings of §8.4. Its constants are bisection's $\tfrac12$ and what follows from it: $\tfrac14=(1-\tfrac12)^2$ and the two branches $m\ge2$, $m\le\tfrac23$ of $|1-1/m|>\tfrac12$. Three choices are declared rather than derived: the multiplier $c$ of the projection (§3.1), the Euclidean geometry of the $(\xi,\varphi)$ plane, and the pattern test of the step lengthening (lags from 2 to half the history, threshold $\tfrac12$). The projection carries the guarantee, $2\lceil\log_2(w_0/\varepsilon_x)\rceil+3$ evaluations; it is verified with no violation on every corpus of this paper and under every safeguard of the grid.
**Table 8.** A′ on the protocol of §4 (published roots, failures charged 200). Per problem against each rival: wins/ties/losses, exact two-sided sign test.
| | APS-154 | CHA-45 | both | vs A′ per problem, APS | vs A′ per problem, CHA |
|---|---|---|---|---|---|
| **A′ (proposed)** | **2438** | **2005** | **4443** | — | — |
| A′, earned budget (no free constant) | 3608 | 2807 | 6415 | | |
| base rule (§3) | 2806 | 3220 | 6026 | | |
| Chandrupatla | 2787 | 2441 | 5228 | A′ 103/20/30, $p=1.5\cdot10^{-10}$ | A′ 29/4/7, $p=3\cdot10^{-4}$ |
| TOMS 748 | 2820 | 4000 | 6820 | A′ 127/6/20 | A′ 38/2/0 |
| Brent | 2889 | 4115 | 7004 | A′ 118/17/18 | A′ 33/3/2 |
| ITP, per-problem oracle | 3260 | 2647 | 5907 | A′ 126/7/20 | A′ 35/1/4 |
A′ is 12.5% below Chandrupatla on the canonical set and 17.9% below on the wide-bracket set, and beats every rival problem by problem on both. On the wide-bracket families it is ahead on seven of nine, level on `fun7` (the scoring artefact of §7.3) and behind on `fun9`, 65 against 55. The earned-budget form keeps its constant-free guarantee of bisection plus one step and pays for it as in §3.1.
**Table 9.** Leave-one-out ablation of A′ on all six corpora of §9 (uniform criterion, a sign change within $10^{-6}$). Δ = total without the component − total with it; positive means the component earns its place.
| component removed | APS | CHA | new-1 | Roots.jl | applied | fourth | sum |
|---|---|---|---|---|---|---|---|
| the whole regime | −7 | +1013 | +1660 | +324 | +77 | +2269 | **+5336** |
| the split (7) (midpoint instead) | −5 | +479 | +667 | +272 | +30 | +1672 | **+3115** |
| overshoot branch | −6 | 0 | −7 | +16 | +63 | +893 | +959 |
| tolerance step (borrowed) | +130 | +35 | +97 | +78 | +135 | −2 | +473 |
| the half the step promises | +249 | +65 | +82 | −16 | −5 | +1 | +376 |
| translation limit | +31 | +143 | +100 | −21 | −2 | +87 | +338 |
| repeated step pattern | −22 | −6 | +123 | −30 | −10 | +34 | +89 |
| sign contradiction | +11 | −12 | +29 | 0 | +1 | −1 | +28 |
Every component is positive in sum; the regime and the split carry the method. Two are marginal and we say so: the step pattern earns on two corpora of six and loses on four, and the sign contradiction is within noise (+28 over 855 problems). Removing both would change A′'s total by under one per cent (117 of 13032 evaluations); they are kept because the pre-registered rule removes only a component that earns nowhere.
## 9. Out-of-sample evidence
Every decision above was taken on the two sets of §4. Pre-registration protects each decision but not the chain: the final configuration was selected on the same 199 problems. Four further corpora were therefore used, each fixed and committed before any method was run on it, each with its criteria and stop rule written down first.
1. **New corpus 1** — 206 problems: SciPy's `original` set (6) and five generated classes of 40 (seed 20260921): smooth simple roots, transcendental simple roots, multiple roots $|x-r|^p$ with $p\sim U(2,20)$, exponential flanks, and near-cancelling terms of the `fun9` kind.
2. **Roots.jl / ModAB** — the published bracketing benchmark of the Julia package Roots.jl [12], taken from the ModAB benchmark of Ganchovski and Traykov [10]: 91 problems, of which 13 coincide with APS or Chandrupatla functions (a seven-point identity test) and are excluded, leaving 78, many of them discontinuous or pathological.
3. **Applied and GSL** — the 10 bracketed problems of the GNU Scientific Library's root-finding test suite [11] and 122 equations from physics and engineering on grids fixed beforehand: Kepler's equation (eccentricity up to 0.999), Colebrook–White, Lambert's W, Planck/Wien, van der Waals for CO₂ (including near-critical), internal rate of return, the finite square well.
4. **Corpus 4** — 240 problems in six new families (seed 20260922): random polynomials with a simple root, polynomials with a multiple root, fractional powers $|x-r|^p$ with $p\sim U(0.15,0.95)$, sums of exponentials and sines, compositions $\tanh$, $\arctan$, $\log(1+q^2)$ of a cubic, and functions odd about the root. The code of A′ was committed *before* this corpus was run, and nothing was changed after.
Where roots are not known in closed form, and for uniformity on all six corpora, a run is solved when $f$ changes sign within $10^{-6}$ of its answer; the $x$-tolerance, the budget and the charge for a failure are those of §4.
**The history is part of the result.** The variant carried to corpora 1–3 was A′ without the tolerance step and the overshoot branch. It transferred to corpus 1 by every pre-registered criterion (total 10% below Chandrupatla, per problem 105/34/67, $p=0.005$), did *not* transfer to Roots.jl (total 6.5% below, but per problem 38/10/30, $p=0.4$) and lost on the applied corpus (14% above). The losses there were traced to two gaps of the base step — no closing of the bracket once the root is reached, and no recognition of roots of order below one — which became the last two readings of §8.4; they were developed on the seen corpora and tested once, on corpus 4.
**Table 10.** A′ against the library rivals on all six corpora (uniform criterion). Totals; in brackets the runs that break the $2\times$-bisection bound. Per problem against Chandrupatla: wins/ties/losses.
| corpus | A′ | Chandrupatla | Brent | TOMS 748 | A′ vs Chandrupatla |
|---|---|---|---|---|---|
| APS (154) | **2259** (0) | 2595 (0) | 2707 (0) | 2636 (0) | 103/20/31, $p=3\cdot10^{-10}$ |
| Chandrupatla (45) | **1074** (0) | 1505 (0) | 3238 (18) | 3088 (15) | 31/4/10, $p=0.001$ |
| new corpus 1 (206) | **3290** (0) | 3716 (0) | 6395 (38) | 5746 (22) | 108/33/65, $p=0.001$ |
| Roots.jl (78) | **1371** (0) | 1566 (0) | 2455 (11) | 2339 (9) | 44/14/20, $p=0.004$ |
| applied + GSL (132) | 1382 (0) | 1382 (0) | 1503 (1) | 1756 (1) | 48/52/32, $p=0.09$ |
| **corpus 4 (240), the one test** | **3656** (0) | 5717 (0) | 8267 (50) | 8084 (37) | **177/35/28, $p=10^{-27}$** |
| all 855 | **13032** | 16481 | 24565 | 23649 | |
Only the last line of corpora is evidence for A′ in the strict sense; the first five were seen while it was developed and are reported as a description. On corpus 4 A′ is 36% below Chandrupatla and wins 177 problems to 28. Without the two classes aimed at by the last two readings it is 2403 against 3569, per problem 107/31/22 ($p=10^{-14}$); on the simple-root classes alone, 737 against 747 (−1.3%), per problem 43/22/15 ($p=3\cdot10^{-4}$).
**Table 11.** Corpus 4 by class: totals of A′ / Chandrupatla, per problem wins/ties/losses.
| class | A′ | Chandrupatla | per problem |
|---|---|---|---|
| random polynomial, simple root | 433 | 419 | 20/8/12 |
| polynomial, multiple root | 1163 | 1805 | 39/1/0 |
| fractional power, $p<1$ | 924 | 1784 | 37/1/2 |
| sums of exponentials and sines | 304 | 328 | 23/14/3 |
| $\tanh$, $\arctan$, $\log(1+q^2)$ of a cubic | 503 | 1017 | 25/8/7 |
| odd about the root | 329 | 364 | 33/3/4 |
**What the evidence supports, and what it does not.** Against Brent and TOMS 748 A′ is ahead on every corpus, by 8% to 67% in total, and it keeps its bound on all 855 problems, which Brent breaks on 118 and TOMS 748 on 84. Against Chandrupatla it is ahead in total on five corpora and level on the sixth, and ahead problem by problem on all six, significantly on five. The size of the lead is not uniform: it is large on multiple, fractional and nearly flat roots — the regime §8 recognises — and small on simple roots, where it is a matter of per cent. Where it is behind is named: `fun9` (65 against 55), the near-cancelling class of corpus 1 (491 against 391), random polynomials with a simple root in total (433 against 419, though ahead 20 to 12 in problems), and the smooth equations of the applied corpus, where the two are level.
--- ---
## 8. Negative results ## 10. Negative results
1. **The prototype-aggregation form of the method loses.** A richer construction — prototypes over *pairs* of evaluated points, softmax weights over the whole memory, similarity on both the value and the abscissa axis — leads on eight hand-picked problems but loses decisively on the real set: 0 wins, 6 ties and 147 losses against Brent. The simplest form of the idea won. 1. **The prototype-aggregation form of the method loses.** A richer construction — prototypes over *pairs* of evaluated points, softmax weights over the whole memory, similarity on both the value and the abscissa axis — leads on eight hand-picked problems but loses decisively on the real set: 0 wins, 6 ties and 147 losses against Brent. The simplest form of the idea won.
@@ -409,7 +532,7 @@ Every statement in §§7.3–7.4 is reproduced by `diag_rescore_cha.py`, `diag_r
3. **Zero slack in the projection is not the degenerate case it was said to be.** An earlier version reported that a worst case of exactly bisection leaves the projection no freedom and makes the guard behave as bisection. Measured (Table 1a), multiplier 1 costs 4817 and 2997, against bisection's 7530 and 3090 — and on the wide-bracket set it beats the multiplier of 2. It remains the most expensive multiplier on the canonical set, which is all that survives of the claim. 3. **Zero slack in the projection is not the degenerate case it was said to be.** An earlier version reported that a worst case of exactly bisection leaves the projection no freedom and makes the guard behave as bisection. Measured (Table 1a), multiplier 1 costs 4817 and 2997, against bisection's 7530 and 3090 — and on the wide-bracket set it beats the multiplier of 2. It remains the most expensive multiplier on the canonical set, which is all that survives of the claim.
4. **Regimes exist, at the level of a function family, and cannot be exploited by a switch.** The cube-root similarity beats the proposed rule on all five members of Chandrupatla's `fun4` — 32/32/40/47/59 against 89/93/113/125/153, a factor of 2.6 — and consistency across a family at different parameters is the signature of structure rather than luck. But the same similarity over the whole Chandrupatla set costs 4099 against 3220, so a switch chosen per benchmark is worse than no switch at all: 6905 against 6026 over both sets. The scale axis offers only 5.3% headroom even to an oracle handed the best scale per problem, two thirds of it inside a single problem family, and the winners are not separated by anything the method can see before it commits — the proposed scale wins on bracket widths from $10^0$ to $10^{12}$. 4. **Regimes exist, at the level of a function family, and cannot be exploited by a switch.** The cube-root similarity beats the base rule on all five members of Chandrupatla's `fun4` — 32/32/40/47/59 against 89/93/113/125/153, a factor of 2.6 — and consistency across a family at different parameters is the signature of structure rather than luck. But the same similarity over the whole Chandrupatla set costs 4109 against 3220, so a switch chosen per benchmark is worse than no switch at all: 6915 against 6026 over both sets. The scale axis offers only 5.3% headroom even to an oracle handed the best scale per problem, two thirds of it inside a single problem family, and the winners are not separated by anything the method can see before it commits — the derived scale wins on bracket widths from $10^0$ to $10^{12}$.
5. **The phase detector: derivation sound, estimator not.** Redoing the contraction law without the assumption $|f|\approx|f'(r)|e$ — taking $|f|\approx K e^m$ instead — does produce the march exponent on its own, $p = L/(L-\ln m)$ with $L=\ln(e/D)$, giving $p=1$ at a simple root and dropping to 0.50 and 0.23 as the approach flattens, which is the neighbourhood of the cube root that wins those families. Substituted back it collapses to the multiplier $m$, measurable as $m = 1/(1-\theta)$ with $\theta = f f''/(f')^2$ from three divided differences and no constant. It preserves the order (2.001) and improves the eight standard problems (82 against 84) — and loses on the full benchmark, 6304 against 6026. The estimator is the failure: on Alefeld–Potra–Shi, where almost every root is simple and the truth is $m=1$, it reports $m>1$ on 27.9% of steps with excursions to $m=34.8$, against 35.8% on the flat families. 27.9 against 35.8 is no separation. A cruder variant, correcting by the fraction of its own promise the previous step kept, fails everything: the order collapses to 0.904 and the standard problems double to 161. 5. **The phase detector: derivation sound, estimator not.** Redoing the contraction law without the assumption $|f|\approx|f'(r)|e$ — taking $|f|\approx K e^m$ instead — does produce the march exponent on its own, $p = L/(L-\ln m)$ with $L=\ln(e/D)$, giving $p=1$ at a simple root and dropping to 0.50 and 0.23 as the approach flattens, which is the neighbourhood of the cube root that wins those families. Substituted back it collapses to the multiplier $m$, measurable as $m = 1/(1-\theta)$ with $\theta = f f''/(f')^2$ from three divided differences and no constant. It preserves the order (2.001) and improves the eight standard problems (82 against 84) — and loses on the full benchmark, 6304 against 6026. The estimator is the failure: on Alefeld–Potra–Shi, where almost every root is simple and the truth is $m=1$, it reports $m>1$ on 27.9% of steps with excursions to $m=34.8$, against 35.8% on the flat families. 27.9 against 35.8 is no separation. A cruder variant, correcting by the fraction of its own promise the previous step kept, fails everything: the order collapses to 0.904 and the standard problems double to 161.
@@ -419,15 +542,15 @@ Every statement in §§7.3–7.4 is reproduced by `diag_rescore_cha.py`, `diag_r
8. **Placement beats form, and the wrong placement is expensive.** The same "refuse before the step" idea as reading (1) of §7, with refusal decided by *promised bracket progress* instead of by the shape of the model, costs 4449 on the canonical set against 2527 — a difference of 1922 evaluations for one choice of criterion. A secant step routinely collapses the error while barely moving the proven bracket, so bracket progress rejects steps that were excellent; this is the same mechanism that makes the bracket guard of §3.1 cost 7260. 8. **Placement beats form, and the wrong placement is expensive.** The same "refuse before the step" idea as reading (1) of §7, with refusal decided by *promised bracket progress* instead of by the shape of the model, costs 4449 on the canonical set against 2527 — a difference of 1922 evaluations for one choice of criterion. A secant step routinely collapses the error while barely moving the proven bracket, so bracket progress rejects steps that were excellent; this is the same mechanism that makes the bracket guard of §3.1 cost 7260.
9. **Making the scale independent of the bracket does not help either.** The natural objection to the derived scale is that it defeats the very principle of a similarity step: with $\sigma=|\hat f'|D$ the normalised residual is $|f|/(|\hat f'|D)$, which on the $2\times10^4$-wide bracket of $x^3-2x-5$ at $x=10^4$ equals 0.167, so $S=0.833$ — "similar" — and the step is small although the root is some five thousand step-lengths away. The similarity is reading what fraction of the *bracket* the Newton step is, not how far the iterate is from the root. Selecting the scale between the two quantities already computed, $\sigma=\min(|\hat f'|D,\max(|f(A)|,|f(B)|))$ — no new constant, a minimum over what is in hand — does give a full-bracket step far away and Newton's step near the root, and on eight hand-picked wide problems it improves 403 evaluations to 390. Over the whole grid it is worse on both sets: 3288 on the canonical set against 2726, and 3111 on the wide-bracket set against 2683. Its apparent extra solves (194 instead of 193) are two `fun7` problems where it lands inside the flat zero region close enough to satisfy the harness — the artefact of §7.3, not a capability. 9. **Making the scale independent of the bracket does not help either.** The natural objection to the derived scale is that it defeats the very principle of a similarity step: with $\sigma=|\hat f'|D$ the normalised residual is $|f|/(|\hat f'|D)$, which on the $2\times10^4$-wide bracket of $x^3-2x-5$ at $x=10^4$ equals 0.167, so $S=0.833$ — "similar" — and the step is small although the root is some five thousand step-lengths away. The similarity is reading what fraction of the *bracket* the Newton step is, not how far the iterate is from the root. Selecting the scale between the two quantities already computed, $\sigma=\min(|\hat f'|D,\max(|f(A)|,|f(B)|))$ — no new constant, a minimum over what is in hand — does give a full-bracket step far away and Newton's step near the root, and on eight hand-picked wide problems it improves 403 evaluations to 390. Over the whole grid it is worse on both sets: 3288 on the canonical set against 2726, and 3111 on the wide-bracket set against 2695. Its apparent extra solves (194 instead of 193) are two `fun7` problems where it lands inside the flat zero region close enough to satisfy the harness — the artefact of §7.3, not a capability.
10. **Reading the similarity at the measured order does not cure false position.** Since false position's stall is a similarity read at order one (§7.1), the obvious hope is that reading it at the measured order is the parameter-free version of the classical fix. It is not. Unguarded, the correction takes the far-end reading from 127/154 and 10676 to 128/154 and 10043 — one problem and six per cent — where Illinois, at the price of one constant (halve the stale ordinate), reaches 153/154 and 7045. A sixth of the gap is not the gap. The correction is real and it is in the right place; it is simply much smaller than a constant that was chosen for exactly this failure. *Our* 10676 and the 10560 of Table 2 are not the same algorithm — our iterate starts at the midpoint of the bracket, plain false position at an end — and the two must not be differenced. 10. **Reading the similarity at the measured order does not cure false position.** Since false position's stall is a similarity read at order one (§7.1), the obvious hope is that reading it at the measured order is the parameter-free version of the classical fix. It is not. Unguarded, the correction takes the far-end reading from 127/154 and 10676 to 128/154 and 10043 — one problem and six per cent — where Illinois, at the price of one constant (halve the stale ordinate), reaches 153/154 and 7045. A sixth of the gap is not the gap. The correction is real and it is in the right place; it is simply much smaller than a constant that was chosen for exactly this failure. *Our* 10676 and the 10560 of Table 2 are not the same algorithm — our iterate starts at the midpoint of the bracket, plain false position at an end — and the two must not be differenced.
11. **A logarithmic change of variable does not buy the wide brackets.** Working in $u=\operatorname{sign}(x-c)\log(1+|x-c|/\varepsilon_x)$ makes the step multiplicative, which looked like the right diagnosis of the flat families — for the same similarity, scale and safeguard ($(1+|z|)^{-2}$, two-point, *safe*) the wide-bracket set improves from 3643 to 3474 — but the canonical set gets worse, 5822 to 6940, against the 2806 of the proposed rule. An earlier version compared the 3474 with 4516, which is the total of a different configuration. A march needs a *ratio* of distances while an identity on narrow brackets needs an *absolute* unit, and no parameter-free unit provides both. §7.4 shows the diagnosis itself was wrong: on the flat families the right move is to halve, not to march. 11. **A logarithmic change of variable does not buy the wide brackets.** Working in $u=\operatorname{sign}(x-c)\log(1+|x-c|/\varepsilon_x)$ makes the step multiplicative, which looked like the right diagnosis of the flat families — for the same similarity, scale and safeguard ($(1+|z|)^{-2}$, two-point, *safe*) the wide-bracket set improves from 3695 to 3541 — but the canonical set gets worse, 5822 to 6940, against the 2806 of the base rule. An earlier version compared the 3541 with 4516, which is the total of a different configuration. A march needs a *ratio* of distances while an identity on narrow brackets needs an *absolute* unit, and no parameter-free unit provides both. §7.4 shows the diagnosis itself was wrong: on the flat families the right move is to halve, not to march.
--- ---
## 9. Conclusion ## 11. Conclusion
A root finder can be derived from a similarity function alone, and the derivation shows where the content of such a method actually sits. It is not in the shape of $S$ — nine shapes were tried and their ranking is dictated by a single number, the slope of $1-S$ at the origin. It is not in making the similarity change faster — that overshoots exactly as readily as flatness stagnates. It is in the *scale* against which similarity is judged: chosen, the method is brittle and merely linear; taken from the bracket, it is false position and three centuries old; read off the data, it is superlinear. And the safeguard that makes such a method safe must project the step, not replace it: replacing costs the order, projecting costs nothing on one benchmark and improves the method on the other. The projection's budget multiplier is a free constant, and we declare it: it does not move the canonical result and it does move the wide-bracket one; projecting onto a budget the steps earn instead removes it, at a measured price. A root finder can be derived from a similarity function alone, and the derivation shows where the content of such a method actually sits. It is not in the shape of $S$ — nine shapes were tried and their ranking is dictated by a single number, the slope of $1-S$ at the origin. It is not in making the similarity change faster — that overshoots exactly as readily as flatness stagnates. It is in the *scale* against which similarity is judged: chosen, the method is brittle and merely linear; taken from the bracket, it is false position and three centuries old; read off the data, it is superlinear. And the safeguard that makes such a method safe must project the step, not replace it: replacing costs the order, projecting costs nothing on one benchmark and improves the method on the other. The projection's budget multiplier is a free constant, and we declare it: it does not move the canonical result and it does move the wide-bracket one; projecting onto a budget the steps earn instead removes it, at a measured price.
@@ -437,7 +560,7 @@ This is the same movement as in parameter-free similarity control [6], where mem
### Future work ### Future work
The diagnosis of §7.4 leaves one question, and it is narrower than the one this section used to pose. An earlier version proposed a logarithmic change of variable to turn an additive step into a geometric march; that was measured and refuted (§8, item 11), and the step turned out to be a fraction of the bracket already. The diagnosis of §7.4 leaves one question, and it is narrower than the one this section used to pose. An earlier version proposed a logarithmic change of variable to turn an additive step into a geometric march; that was measured and refuted (§10, item 11), and the step turned out to be a fraction of the bracket already.
What is open is a decision, not a model. On two thirds of the remaining gap the right move is to halve, and Chandrupatla halves; our guarantee permits a step that is slower than halving, and nothing we have measured tells our step when it is. The condition itself is known exactly — a tangent step on an approach of local order $m$ lands at $e(1-1/m)$ and loses to a halving when $m\ge2$ — so the constant is bisection's $\tfrac12$ and not a choice. What is missing is a reading of $m$ that sees it: the three-point estimator reports $m\ge2$ on 0.2% of canonical states, which is the right silence, and on 5.8% of states of pure powers of order 3 to 19, which is blindness. Two successive residuals of the run itself carry the order more directly than a parabola through three points — on an order-$m$ approach under tangent steps their ratio settles at $(1-1/m)^m$, while at a simple root it goes to zero — and that is the reading we would test next, under the same rule as every other here: pre-registered, with the canonical set as the price it must not charge. What is open is a decision, not a model. On two thirds of the remaining gap the right move is to halve, and Chandrupatla halves; our guarantee permits a step that is slower than halving, and nothing we have measured tells our step when it is. The condition itself is known exactly — a tangent step on an approach of local order $m$ lands at $e(1-1/m)$ and loses to a halving when $m\ge2$ — so the constant is bisection's $\tfrac12$ and not a choice. What is missing is a reading of $m$ that sees it: the three-point estimator reports $m\ge2$ on 0.2% of canonical states, which is the right silence, and on 5.8% of states of pure powers of order 3 to 19, which is blindness. Two successive residuals of the run itself carry the order more directly than a parabola through three points — on an order-$m$ approach under tangent steps their ratio settles at $(1-1/m)^m$, while at a simple root it goes to zero — and that is the reading we would test next, under the same rule as every other here: pre-registered, with the canonical set as the price it must not charge.
File diff suppressed because one or more lines are too long