LapackEigScalar

Trait LapackEigScalar 

Source
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§

Source

fn eig_buffer_sizes(n: usize) -> (usize, usize)

Return the temporary value/vector buffer sizes used by the CPU eig path.

Source

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.

Implementations on Foreign Types§

Source§

impl LapackEigScalar for f32

Source§

fn eig_buffer_sizes(n: usize) -> (usize, usize)

Source§

fn eig_ri_to_complex( n: usize, val_ri: &[Self], vec_ri: &[Self], values_out: &mut [Complex32], vectors_out: &mut [Complex32], )

Source§

impl LapackEigScalar for f64

Source§

fn eig_buffer_sizes(n: usize) -> (usize, usize)

Source§

fn eig_ri_to_complex( n: usize, val_ri: &[Self], vec_ri: &[Self], values_out: &mut [Complex64], vectors_out: &mut [Complex64], )

Source§

impl LapackEigScalar for Complex32

Source§

fn eig_buffer_sizes(n: usize) -> (usize, usize)

Source§

fn eig_ri_to_complex( _n: usize, val_ri: &[Self], vec_ri: &[Self], values_out: &mut [Complex32], vectors_out: &mut [Complex32], )

Source§

impl LapackEigScalar for Complex64

Source§

fn eig_buffer_sizes(n: usize) -> (usize, usize)

Source§

fn eig_ri_to_complex( _n: usize, val_ri: &[Self], vec_ri: &[Self], values_out: &mut [Complex64], vectors_out: &mut [Complex64], )

Implementors§