Enum Certified

Source
#[non_exhaustive]
pub enum Certified { Certain { sign: Sign, precision: Precision, }, Uncertain { attempted: Precision, }, }
Expand description

A predicate evaluation that may or may not be trustworthy.

Uncertain is deliberately not a sign: it carries no Sign payload, so a caller cannot accidentally read a value out of it. The only way to obtain a Sign is to handle the uncertain case explicitly.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Certain

The sign is proven at the reported precision.

Fields

§sign: Sign

The proven sign.

§precision: Precision

Precision tier at which the proof was obtained.

§

Uncertain

The computed value was within its own error bound of zero, so the sign could not be determined at this precision. Escalate.

Fields

§attempted: Precision

Precision tier that failed to decide.

Implementations§

Source§

impl Certified

Source

pub fn from_filter(value: f64, error_bound: f64, precision: Precision) -> Self

Certify a value against a filter’s absolute error bound.

The bound is the maximum absolute error the computation may carry. If zero lies inside value +- bound the sign is not decidable here, which is the whole point of a filtered predicate: it reports failure instead of guessing. A non-finite value or bound is never certifiable.

Source

pub const fn exact_sign(sign: Sign) -> Self

Certify an exact computation. Only valid where no rounding occurred.

An exact zero is a certain answer – the configuration is genuinely degenerate – which is different from being unable to decide. A sign established by exact arithmetic, where no integer value exists.

An exact predicate cascade produces a proven sign without producing a representable magnitude: the determinant lives in a multi-term expansion, not one i64. Without this constructor such a result could only be reported as Uncertain, which would discard the very proof the exact path was paid for.

Source

pub const fn exact(value: i64) -> Self

Source

pub const fn sign(self) -> Option<Sign>

The proven sign, or None when escalation is required.

Source

pub const fn is_certain(self) -> bool

Whether this result is safe to drive a topology decision.

Trait Implementations§

Source§

impl Clone for Certified

Source§

fn clone(&self) -> Certified

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Certified

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for Certified

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Certified

Source§

fn eq(&self, other: &Certified) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Certified

Source§

impl Eq for Certified

Source§

impl StructuralPartialEq for Certified

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.