Add an ITP (Interpolate–Truncate–Project) bracketing root finder to twine-solvers.
Why ITP
ITP is a bracketing method that combines the reliability of bisection with superlinear convergence on smooth functions. Like bisection, it maintains a bracket that's guaranteed to contain a root — but instead of always evaluating the midpoint, it picks a smarter point through three steps:
- Interpolate — regula falsi step toward the root estimate
- Truncate — limit how far from the midpoint the step can go
- Project — ensure the point stays within a minmax-optimal region
The result: worst-case performance matches bisection (log₂ convergence), but typical performance is significantly faster.
Why it fits Twine
ITP is a natural complement to bisection in the bracketing solver family. The observer pattern is particularly interesting here — the same error recovery that bisection supports (assuming residual signs for failed evaluations, stopping early) applies directly. An observer watching ITP iterations could also monitor whether the interpolation is helping or whether the solver is falling back to bisection-like behavior.
Prerequisites
Depends on the shared bracketing types extracted in #250.
Add an ITP (Interpolate–Truncate–Project) bracketing root finder to
twine-solvers.Why ITP
ITP is a bracketing method that combines the reliability of bisection with superlinear convergence on smooth functions. Like bisection, it maintains a bracket that's guaranteed to contain a root — but instead of always evaluating the midpoint, it picks a smarter point through three steps:
The result: worst-case performance matches bisection (log₂ convergence), but typical performance is significantly faster.
Why it fits Twine
ITP is a natural complement to bisection in the bracketing solver family. The observer pattern is particularly interesting here — the same error recovery that bisection supports (assuming residual signs for failed evaluations, stopping early) applies directly. An observer watching ITP iterations could also monitor whether the interpolation is helping or whether the solver is falling back to bisection-like behavior.
Prerequisites
Depends on the shared bracketing types extracted in #250.