Macaulay2 Engine
Loading...
Searching...
No Matches
eigen.hpp File Reference

EigenM2 namespace — Eigen3-backed SVD / eigenvalues / eigenvectors / least-squares for DMat<R> over RR, CC, RRR, CCC. More...

#include "dmat.hpp"
#include "aring-RR.hpp"
#include "aring-CC.hpp"
#include "aring-RRR.hpp"
#include "aring-CCC.hpp"

Go to the source code of this file.

Namespaces

namespace  EigenM2

Typedefs

using LMatrixRR = DMat<M2::ARingRR>
using LMatrixCC = DMat<M2::ARingCC>
using LMatrixRRR = DMat<M2::ARingRRR>
using LMatrixCCC = DMat<M2::ARingCCC>

Functions

bool EigenM2::SVD (const LMatrixRR *A, LMatrixRR *Sigma, LMatrixRR *U, LMatrixRR *VT)
bool EigenM2::SVD (const LMatrixCC *A, LMatrixRR *Sigma, LMatrixCC *U, LMatrixCC *VT)
bool EigenM2::SVD_divide_conquer (const LMatrixRR *A, LMatrixRR *Sigma, LMatrixRR *U, LMatrixRR *VT)
bool EigenM2::SVD_divide_conquer (const LMatrixCC *A, LMatrixRR *Sigma, LMatrixCC *U, LMatrixCC *VT)
bool EigenM2::eigenvalues (const LMatrixRR *A, LMatrixCC *eigenvals)
bool EigenM2::eigenvalues (const LMatrixCC *A, LMatrixCC *eigenvals)
bool EigenM2::eigenvalues_hermitian (const LMatrixRR *A, LMatrixRR *eigenvals)
bool EigenM2::eigenvalues_hermitian (const LMatrixCC *A, LMatrixRR *eigenvals)
bool EigenM2::eigenvectors (const LMatrixRR *A, LMatrixCC *eigenvals, LMatrixCC *eigenvecs)
bool EigenM2::eigenvectors (const LMatrixCC *A, LMatrixCC *eigenvals, LMatrixCC *eigenvecs)
bool EigenM2::eigenvectors_hermitian (const LMatrixRR *A, LMatrixRR *eigenvals, LMatrixRR *eigenvecs)
bool EigenM2::eigenvectors_hermitian (const LMatrixCC *A, LMatrixRR *eigenvals, LMatrixCC *eigenvecs)
bool EigenM2::least_squares (const LMatrixRR *A, const LMatrixRR *B, LMatrixRR *X)
bool EigenM2::least_squares (const LMatrixCC *A, const LMatrixCC *B, LMatrixCC *X)
bool EigenM2::SVD (const LMatrixRRR *A, LMatrixRRR *Sigma, LMatrixRRR *U, LMatrixRRR *VT)
bool EigenM2::SVD (const LMatrixCCC *A, LMatrixRRR *Sigma, LMatrixCCC *U, LMatrixCCC *VT)
bool EigenM2::SVD_divide_conquer (const LMatrixRRR *A, LMatrixRRR *Sigma, LMatrixRRR *U, LMatrixRRR *VT)
bool EigenM2::SVD_divide_conquer (const LMatrixCCC *A, LMatrixRRR *Sigma, LMatrixCCC *U, LMatrixCCC *VT)
bool EigenM2::eigenvalues (const LMatrixRRR *A, LMatrixCCC *eigenvals)
bool EigenM2::eigenvalues (const LMatrixCCC *A, LMatrixCCC *eigenvals)
bool EigenM2::eigenvalues_hermitian (const LMatrixRRR *A, LMatrixRRR *eigenvals)
bool EigenM2::eigenvalues_hermitian (const LMatrixCCC *A, LMatrixRRR *eigenvals)
bool EigenM2::eigenvectors (const LMatrixRRR *A, LMatrixCCC *eigenvals, LMatrixCCC *eigenvecs)
bool EigenM2::eigenvectors (const LMatrixCCC *A, LMatrixCCC *eigenvals, LMatrixCCC *eigenvecs)
bool EigenM2::eigenvectors_hermitian (const LMatrixRRR *A, LMatrixRRR *eigenvals, LMatrixRRR *eigenvecs)
bool EigenM2::eigenvectors_hermitian (const LMatrixCCC *A, LMatrixRRR *eigenvals, LMatrixCCC *eigenvecs)
bool EigenM2::least_squares (const LMatrixRRR *A, const LMatrixRRR *B, LMatrixRRR *X)
bool EigenM2::least_squares (const LMatrixCCC *A, const LMatrixCCC *B, LMatrixCCC *X)

Detailed Description

EigenM2 namespace — Eigen3-backed SVD / eigenvalues / eigenvectors / least-squares for DMat<R> over RR, CC, RRR, CCC.

Note
AI-generated documentation. Verify against the source before relying on it.

Declares aliases LMatrixRR, LMatrixCC, LMatrixRRR, LMatrixCCC over the four DMat<R> instantiations the engine cares about for numerical linear algebra, then a namespace EigenM2 of free-function wrappers — SVD, SVD_divide_conquer, eigenvalues, eigenvalues_hermitian, eigenvectors, eigenvectors_hermitian, least_squares — that operate on those DMat pointers. Each routine returns bool so the engine can surface convergence failures to the M2 user.

All implementations live in eigen.cpp and call into the Eigen3 template library (Eigen's JacobiSVD / BDCSVD / EigenSolver / SelfAdjointEigenSolver, plus mpreal-backed scalars from <unsupported/Eigen/MPRealSupport> for the MPFR-precision RRR / CCC cases). The RR / CC implementations are guarded by #ifdef NO_LAPACK: by default mat-linalg.hpp skips this header and routes hardware-precision SVD / eigen queries to Lapack:: directly; the RRR / CCC overloads are always built. Interval rings RRi / CCi are not yet plumbed through here.

See also
lapack.hpp
dmat.hpp
mat-linalg.hpp

Definition in file eigen.hpp.