pub fn bisect_axis(
base: &ResolvedSolveRequestV1,
axis: InputAxis,
range_m: f64,
domain: (f64, f64),
predicate: &dyn Fn(&Observation) -> bool,
tolerance: f64,
) -> Result<Option<f64>, KernelError>Expand description
Bisect axis over domain at a single range_m until predicate (evaluated on the
observation at that range) changes truth value, to within tolerance. See the module doc’s
“Bisection contract” for what None means and what predicate must satisfy.
§Errors
KernelError::CategoricalAxisifaxisis categorical.- Any error
with_axisorevaluateproduce while probingdomain– includingKernelError::AxisUnsupportedForRequestandKernelError::AxisAbsent– propagated unchanged from the first probe that hits them (domain.0, checked before any bisection step runs), so a request/axis combinationwith_axisrefuses is reported as that specific refusal, never silently folded into “no crossing” (Ok(None)).