Bounded Iterative Process
Abstract base for root-finding algorithms operating within a bounded search interval. Parallel branch to RootFinder directly under IterativeProcess. Does not impose the sign-change (bracketing) constraint — concrete subclasses that require it assert it in their own init blocks via RootFinder.Companion.hasRoot.
Hierarchy
IterativeProcess<T>
└── FunctionalIterator (existing — untouched)
└── RootFinder (existing — untouched)
└── BoundedIterativeProcess<T> (this class)
└── StochasticApproximationRootFinderStopping
hasNextStep returns false once maxIterations is reached → COMPLETED_ALL_STEPS.
Convergence is signalled by calling stop in checkStoppingCondition → MET_STOPPING_CONDITION.
Degenerate boundary conditions call stop with a diagnostic message → same status.
Observability note
Concrete subclasses may supplement IterativeProcess's Observable
Parameters
Function whose root is sought.
Bounded search interval. lowerLimit must be < upperLimit.
Starting candidate root. Must lie within interval.
Max iterations before termination. Must be > 0.
Convergence target. Must be > 0.
Type Parameters
Step type for Observable
Inheritors
Constructors
Properties
f(currentX). Always updated atomically with currentX via assignCandidateX.
Current candidate root. Always updated atomically with currentFOfX via assignCandidateX.
Functions
Atomically advances the candidate root to x and recomputes currentFOfX = f(x). All subclass code that moves the candidate root must use this method.
Returns true while not stopped and iteration count has not reached maxIterations.
Tests whether func has a bracketing sign-change root within anInterval. Delegates to RootFinder.Companion.hasRoot so subclasses do not need a direct RootFinder import for the bracketing check.
Resets process bookkeeping and re-seeds currentX/currentFOfX from initialPoint. Subclasses must call super.initializeIterations() first.