pub struct LanczosResult {
pub eigenvalues: Vec<f64>,
pub eigenvectors: Vec<Vec<f32>>,
pub residual: f64,
pub norm_estimate: f64,
pub converged: bool,
pub restarts: usize,
}Expand description
Outcome of a restarted Lanczos solve, with the convergence diagnostics.
The diagnostics exist because a budget-exhausted solve and a converged one are otherwise indistinguishable from the outside, and the difference is several digits of accuracy in the eigenvalues.
Fields§
§eigenvalues: Vec<f64>Eigenvalues sorted descending. Kept in f64 because the callers form
lambda / (1 - lambda), which is catastrophic in f32 once lambda
approaches one, as it does for any diffusion operator.
eigenvectors: Vec<Vec<f32>>eigenvectors[i][j] is element i of eigenvector j. Always exactly
eigenvalues.len() columns wide.
residual: f64Largest residual ||A x - lambda x|| over the returned pairs.
norm_estimate: f64Scale the residual was tested against, i.e. the ||A|| estimate.
converged: boolWhether residual met tol * norm_estimate.
restarts: usizeRestart cycles actually run.
Trait Implementations§
Source§impl Clone for LanczosResult
impl Clone for LanczosResult
Auto Trait Implementations§
impl Freeze for LanczosResult
impl RefUnwindSafe for LanczosResult
impl Send for LanczosResult
impl Sync for LanczosResult
impl Unpin for LanczosResult
impl UnsafeUnpin for LanczosResult
impl UnwindSafe for LanczosResult
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
Mutably borrows from an owned value. Read more
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> ⓘ
Converts
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> ⓘ
Converts
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,
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>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
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
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.