Happy New Year 2025! 🎉
This version of Spectra has a major update: the support for complex Hermitian matrices is finally added, and now you can use the HermEigsSolver
eigen solver to compute real eigenvalues of Hermitian matrices. This functionality has been requested for a long time (e.g. #6 dating back to ten years ago!), and I am excited to make this first step. 🥳
Added
- Added the eigen solver
HermEigsSolver
for complex-valued Hermitian matrices - Added the support for complex Hermitian matrices to various linear algebra classes, such as
Arnoldi
,Lanczos
, andBKLDLT
SimpleRandom
can now generate random complex values- Added testing code for Arnoldi factorization on both real matrices and complex Hermitian matrices
- Added
BKLDLT
tests for complex Hermitian matrices - Added testing code for the
HermEigsSolver
solver - Added test examples from previous bug reports
Changed
- Better heuristics for basis restarting in the Lanczos factorization, which fixes #159
- Fixed the support for non-literal data types (#150)
- Various CMake configuration improvements (#127, #140, #152), thanks to @LTLA, @JensWehner, @shivupa, @jschueller, @alecjacobson, and @jdumas
- Miscellaneous GitHub Actions updates
- Various internal implementation changes to accommodate operations on complex-valued matrices
- Improved the numerical stability of
BKLDLT
linear system solver - Change
SymEigsBase
toHermEigsBase
as the base class for both real symmetric and complex Hermitian eigen solvers