pub trait LapackEigScalar: LinalgScalar {
// Required methods
fn eig_buffer_sizes(n: usize) -> (usize, usize);
fn eig_ri_to_complex(
n: usize,
val_ri: &[Self],
vec_ri: &[Self],
values_out: &mut [Self::Complex],
vectors_out: &mut [Self::Complex],
);
}Expand description
LAPACK-oriented eigen helper contract for CPU eigendecomposition paths.
This trait is intentionally narrower than LinalgScalar. It exists so
CPU eigensolver glue can request the real/imag buffer conversion helpers it
needs without forcing every backend-generic scalar contract to carry LAPACK
details.
§Examples
use tenferro_linalg_prims::LapackEigScalar;
let (vals, vecs) = <f64 as LapackEigScalar>::eig_buffer_sizes(2);
assert_eq!((vals, vecs), (4, 8));Required Methods§
Sourcefn eig_buffer_sizes(n: usize) -> (usize, usize)
fn eig_buffer_sizes(n: usize) -> (usize, usize)
Return the temporary value/vector buffer sizes used by the CPU eig path.
Sourcefn eig_ri_to_complex(
n: usize,
val_ri: &[Self],
vec_ri: &[Self],
values_out: &mut [Self::Complex],
vectors_out: &mut [Self::Complex],
)
fn eig_ri_to_complex( n: usize, val_ri: &[Self], vec_ri: &[Self], values_out: &mut [Self::Complex], vectors_out: &mut [Self::Complex], )
Convert LAPACK-style real/imag outputs into complex values/vectors.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.