pub trait Eig<T: ComplexFloat> {
// Required methods
fn eig<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> EigResult<T>;
fn eig_full<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> EigResult<T>;
fn eig_values<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> EigResult<T>;
fn eigh<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> EigResult<T>;
fn eigs<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> EigResult<T>;
fn schur<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> SchurResult<T>;
fn schur_overwrite<L: Layout>(
&self,
a: &mut DSlice<T, 2, L>,
t: &mut DSlice<T, 2, Dense>,
z: &mut DSlice<T, 2, Dense>,
) -> Result<(), SchurError>;
fn schur_complex<L: Layout>(
&self,
a: &mut DSlice<T, 2, L>,
) -> SchurResult<T>;
fn schur_complex_overwrite<L: Layout>(
&self,
a: &mut DSlice<T, 2, L>,
t: &mut DSlice<T, 2, Dense>,
z: &mut DSlice<T, 2, Dense>,
) -> Result<(), SchurError>;
}Expand description
Eigenvalue decomposition operations of general and Hermitian/symmetric matrices
Required Methods§
Sourcefn eig<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> EigResult<T>
fn eig<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> EigResult<T>
Compute eigenvalues and right eigenvectors with new allocated matrices
The matrix A satisfies: A * v = λ * v where v are the right eigenvectors
Sourcefn eig_full<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> EigResult<T>
fn eig_full<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> EigResult<T>
Compute eigenvalues and both left/right eigenvectors with new allocated matrices
The matrix A satisfies: A * vr = λ * vr and vl^H * A = λ * vl^H
where vr are right eigenvectors and vl are left eigenvectors
Sourcefn eig_values<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> EigResult<T>
fn eig_values<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> EigResult<T>
Compute only eigenvalues with new allocated vectors
Sourcefn eigh<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> EigResult<T>
fn eigh<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> EigResult<T>
Compute eigenvalues and eigenvectors of a Hermitian matrix (input should be complex)
Sourcefn eigs<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> EigResult<T>
fn eigs<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> EigResult<T>
Compute eigenvalues and eigenvectors of a symmetric matrix (input should be real)
Sourcefn schur<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> SchurResult<T>
fn schur<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> SchurResult<T>
Compute Schur decomposition with new allocated matrices
Sourcefn schur_overwrite<L: Layout>(
&self,
a: &mut DSlice<T, 2, L>,
t: &mut DSlice<T, 2, Dense>,
z: &mut DSlice<T, 2, Dense>,
) -> Result<(), SchurError>
fn schur_overwrite<L: Layout>( &self, a: &mut DSlice<T, 2, L>, t: &mut DSlice<T, 2, Dense>, z: &mut DSlice<T, 2, Dense>, ) -> Result<(), SchurError>
Compute Schur decomposition overwriting existing matrices
Sourcefn schur_complex<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> SchurResult<T>
fn schur_complex<L: Layout>(&self, a: &mut DSlice<T, 2, L>) -> SchurResult<T>
Compute Schur (complex) decomposition with new allocated matrices
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.