num::eig_sym¶
Defined in header <linear/eigen/jacobi_eig.hpp>
eigen_result eig_sym(const with_law<mat<real>, law::self_adjoint> &A, real tol = 1e-12,
idx max_sweeps = 100); // (1)
template <class M>
requires matrix_space<M> && (!claims<M, law::self_adjoint>)
eigen_result eig_sym(const M & /*untagged*/, real = 1e-12, idx = 100); // (2)
(1) Compute full symmetric eigendecomposition \(A = V \Lambda V^T\), with sorted eigenvalues and orthonormal eigenvector columns.
Uses LAPACK dsyevd when configured, else OpenMP or sequential cyclic Jacobi. Call num::lapack::eig_sym, num::omp::eig_sym or num::seq::eig_sym to force one.
(2) Rejects an untagged matrix at compile time.
Parameters¶
A: Symmetric matrix, e.g.num::assume_symmetric(A).tol: Jacobi tolerance on \(\sum_{i \ne j} A_{ij}^2\); LAPACK ignores it.max_sweeps: Maximum Jacobi sweeps (default: 100); LAPACK ignores it.
Return value¶
eigen_result containing sorted eigenvalues, column eigenvector matrix, sweep count, and convergence status.