pub fn eig(a: impl AsRef<Array>) -> Result<(Array, Array)>Expand description
Compute the eigenvalues and eigenvectors of a square matrix.
This function supports arrays with at least 2 dimensions. When the input has more than two dimensions, the eigenvalues and eigenvectors are computed for each matrix in the last two dimensions.
Unlike [eigh], this function computes eigenvalues for general (not necessarily symmetric
or Hermitian) matrices. The eigenvalues and eigenvectors may be complex.
§Params
a: Input array. Must be a square matrix.
§Returns
A tuple (eigenvalues, eigenvectors) where eigenvalues has shape (..., N) and
eigenvectors has shape (..., N, N). The eigenvectors are stored as columns.
§Example
use mlx_rs::{Array, linalg::*, StreamOrDevice};
let a = Array::from_slice(&[1.0f32, 1.0, 3.0, 4.0], &[2, 2]);
let (eigenvalues, eigenvectors) = eig_device(&a, StreamOrDevice::cpu()).unwrap();
// eigenvalues and eigenvectors are complex even for real input