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::{linalg::*, with_stream, Array, Stream};
with_stream(&Stream::cpu(), || {
let a = Array::from_slice(&[1.0f32, 1.0, 3.0, 4.0], &[2, 2]);
let (eigenvalues, eigenvectors) = eig(&a).unwrap();
// eigenvalues and eigenvectors are complex even for real input
});