pub enum SolverRecipe {
NalgebraTrfLegacy,
FlatGaussianFirstTie,
DenseGaussianLastTie,
ScipyHostLapackReference,
OwnedDeterministicCholesky,
OwnedDeterministicTrf,
}Expand description
Linear-solve / factorization operation order. Determinism note: the legacy
SPP path is nalgebra LU (not bit-portable end-to-end), preserved as a named
variant; the owned deterministic kernel (P5) owns the dense subproblem
factorization with its own goldens. Its determinism scope is the
factorization, not the surrounding nalgebra reductions that build the
subproblem – see Self::OwnedDeterministicTrf.
Variants§
NalgebraTrfLegacy
nalgebra trust-region least squares, the current SPP solver
(spp / crate::astro::math::least_squares). Existing SPP goldens use
this; kept unchanged.
FlatGaussianFirstTie
Flat first-tie Gaussian elimination (RTK baseline/filter solve).
DenseGaussianLastTie
Dense last-tie Gaussian elimination (PPP solve,
crate::astro::math::linear::solve_linear_last_tie).
ScipyHostLapackReference
scipy host LAPACK reference solve (machine-dependent; only as a fingerprinted CI reference, never canonical).
OwnedDeterministicCholesky
Owned deterministic Cholesky (square-root) linear solve, the canonical RTK
(P6 increment 2) and canonical PPP (P6 increment 3) solver: the SPD normal
system is factored Λ = L Lᵀ and solved by forward/back substitution
through the owned
crate::astro::math::linear::solve_flat_normal_square_root_into kernel,
with no nalgebra LU and no black-box BLAS. Paired with
NormalRecipe::CanonicalSquareRoot. Both the RTK and PPP canonical paths
are owned scalar arithmetic and f64 sqrt is IEEE-754 correctly rounded, so
unlike Self::OwnedDeterministicTrf (whose surrounding reductions ride
nalgebra) its bit guarantee covers the full solve and is portable across
platforms.
OwnedDeterministicTrf
Owned deterministic trust-region subproblem solve added in P5: a
fixed-reduction-order dense Gaussian elimination (the
OwnedGaussianFirstTie kernel) with no nalgebra LU and no black-box BLAS
in the factorization, pinned to its OWN frozen-bits goldens. Scope: it
owns ONLY the subproblem factorization; the normal-matrix / gradient /
norm reductions that build the subproblem still flow through nalgebra’s
CPU-dispatched dense algebra, so the cross-platform bit guarantee is
scoped to the factorization, not the full solve.
Trait Implementations§
Source§impl Clone for SolverRecipe
impl Clone for SolverRecipe
Source§fn clone(&self) -> SolverRecipe
fn clone(&self) -> SolverRecipe
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 SolverRecipe
Source§impl Debug for SolverRecipe
impl Debug for SolverRecipe
Source§impl Default for SolverRecipe
impl Default for SolverRecipe
Source§fn default() -> SolverRecipe
fn default() -> SolverRecipe
impl Eq for SolverRecipe
Source§impl Hash for SolverRecipe
impl Hash for SolverRecipe
Source§impl PartialEq for SolverRecipe
impl PartialEq for SolverRecipe
Source§fn eq(&self, other: &SolverRecipe) -> bool
fn eq(&self, other: &SolverRecipe) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for SolverRecipe
Auto Trait Implementations§
impl Freeze for SolverRecipe
impl RefUnwindSafe for SolverRecipe
impl Send for SolverRecipe
impl Sync for SolverRecipe
impl Unpin for SolverRecipe
impl UnsafeUnpin for SolverRecipe
impl UnwindSafe for SolverRecipe
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.