pub enum ProjVgridshiftArithmetic {
SeparateMultiplyAdd,
FusedMultiplyAdd,
}Expand description
Floating-point evaluation recipe for PROJ vertical-grid interpolation.
PROJ 9.3.0 expresses its final three accumulation steps as ordinary C++ multiply/add statements and does not set a contraction policy. Consequently, conforming builds can differ by one ULP depending on compiler, target, and build flags. Selecting the recipe explicitly makes the requested behavior reproducible instead of guessing from the Rust compilation target.
Variants§
SeparateMultiplyAdd
Round the multiplication and addition separately.
This matches PROJ builds where floating-point contraction is disabled, including the reviewed default x86-64 Clang build of PROJ 9.3.0.
FusedMultiplyAdd
Evaluate each accumulation as a fused multiply-add with one rounding.
This matches PROJ builds where the compiler contracts the statements, including the AArch64 PROJ 9.3.0 build used for the dense fixture.
Trait Implementations§
Source§impl Clone for ProjVgridshiftArithmetic
impl Clone for ProjVgridshiftArithmetic
Source§fn clone(&self) -> ProjVgridshiftArithmetic
fn clone(&self) -> ProjVgridshiftArithmetic
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 ProjVgridshiftArithmetic
Source§impl Debug for ProjVgridshiftArithmetic
impl Debug for ProjVgridshiftArithmetic
impl Eq for ProjVgridshiftArithmetic
Source§impl PartialEq for ProjVgridshiftArithmetic
impl PartialEq for ProjVgridshiftArithmetic
impl StructuralPartialEq for ProjVgridshiftArithmetic
Auto Trait Implementations§
impl Freeze for ProjVgridshiftArithmetic
impl RefUnwindSafe for ProjVgridshiftArithmetic
impl Send for ProjVgridshiftArithmetic
impl Sync for ProjVgridshiftArithmetic
impl Unpin for ProjVgridshiftArithmetic
impl UnsafeUnpin for ProjVgridshiftArithmetic
impl UnwindSafe for ProjVgridshiftArithmetic
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> 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.