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
Step type for Observable
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.
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.