pub enum StationarityStandard {
Measured {
bound: f64,
rung: StationarityRung,
},
NoComparison,
}Expand description
What a non-convergence refusal was decided against (#2458/#2465).
A verdict is only falsifiable from the run record if it carries the quantity
it was decided against, and for a stationarity refusal that quantity is two
facts travelling together: the bound, and the rung that produced it. They
used to be two independent fields — stationarity_bound: f64 beside
stationarity_bound_rung: Option<StationarityRung> — and the Option was a
hole any call site with a number to hand could take. Twenty of the outer
runner’s thirty refusal paths took it.
Bundling the pair was not the whole defect. Most of those twenty refuse before any stationarity comparison exists: a failed terminal evaluation, a malformed gradient, a non-converged inner state. They reported the raw configured tolerance — a constant the point was never weighed against — in a sentence reading “projected gradient norm … against stationarity bound …”, asserting a pairing the code does not have. Naming that constant with a rung makes the sentence more confident, not more honest; the fix is to report no bound, because none was applied.
Self::Measured therefore means something specific and checkable: the
bound is a property of this point, derived from its own evidence by the
named rung, and the reported residual is the quantity weighed against it.
Variants§
Measured
A stationarity residual measured at this point was weighed against
bound, which rung derived from this point’s own evidence.
NoComparison
The refusal was decided without any stationarity comparison — the
terminal evidence was rejected before a residual existed, or the
predicate was an identity/existence check rather than a bound test. The
refusal’s reason carries the basis; no bound is reported because none
was applied.
Implementations§
Trait Implementations§
Source§impl Clone for StationarityStandard
impl Clone for StationarityStandard
Source§fn clone(&self) -> StationarityStandard
fn clone(&self) -> StationarityStandard
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for StationarityStandard
Source§impl Debug for StationarityStandard
impl Debug for StationarityStandard
Source§impl<'de> Deserialize<'de> for StationarityStandardwhere
'de: 'static,
impl<'de> Deserialize<'de> for StationarityStandardwhere
'de: 'static,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Display for StationarityStandard
impl Display for StationarityStandard
Source§impl PartialEq for StationarityStandard
impl PartialEq for StationarityStandard
Source§impl Serialize for StationarityStandard
impl Serialize for StationarityStandard
impl StructuralPartialEq for StationarityStandard
Auto Trait Implementations§
impl Freeze for StationarityStandard
impl RefUnwindSafe for StationarityStandard
impl Send for StationarityStandard
impl Sync for StationarityStandard
impl Unpin for StationarityStandard
impl UnsafeUnpin for StationarityStandard
impl UnwindSafe for StationarityStandard
Blanket Implementations§
impl<T> Boilerplate for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
impl<T> Scalar for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.