pub fn eig<F>(
a: &ArrayBase<ViewRepr<&F>, Dim<[usize; 2]>>,
workers: Option<usize>,
) -> Result<(ArrayBase<OwnedRepr<Complex<F>>, Dim<[usize; 1]>>, ArrayBase<OwnedRepr<Complex<F>>, Dim<[usize; 2]>>), LinalgError>Expand description
Compute the eigenvalues and right eigenvectors of a square matrix.
§Arguments
a- Input square matrixworkers- Number of worker threads (None = use default)
§Returns
- Tuple (eigenvalues, eigenvectors) where eigenvalues is a complex vector and eigenvectors is a complex matrix whose columns are the eigenvectors
§Examples
use scirs2_core::ndarray::array;
use scirs2_linalg::eigen::standard::eig;
let a = array![[1.0_f64, 0.0], [0.0, 2.0]];
let (w, v) = eig(&a.view(), None).expect("Operation failed");
// Sort eigenvalues (they may be returned in different order)
let mut eigenvalues = vec![(w[0].re, 0), (w[1].re, 1)];
eigenvalues.sort_by(|a, b| a.0.partial_cmp(&b.0).expect("Operation failed"));
assert!((eigenvalues[0].0 - 1.0).abs() < 1e-10);
assert!((eigenvalues[1].0 - 2.0).abs() < 1e-10);