A header-only C++ library for solving large-scale eigenvalue problems, built on top of Eigen.
Spectra is a header-only C++ library for solving large-scale eigenvalue problems, built on top of the Eigen linear algebra library. It implements the implicitly restarted Arnoldi/Lanczos method to efficiently compute a subset of eigenvalues and eigenvectors, particularly for sparse matrices where full decomposition is impractical. The library acts as a modern redesign of the ARPACK package, offering a clean C++ interface and flexible matrix operation abstraction.
C++ developers and researchers working on numerical linear algebra, scientific computing, or engineering applications that require efficient eigenvalue computations for large, sparse matrices.
Developers choose Spectra for its header-only design, seamless integration with Eigen, and efficient handling of large-scale problems without external dependencies. It provides a modern, flexible alternative to ARPACK with support for various matrix types and specialized solvers.
A header-only C++ library for large scale eigenvalue problems
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Easy to embed in C++ projects with no compilation overhead, as it only requires the Eigen library, which is also header-only, simplifying dependency management.
Optimized for large sparse matrices via wrapper classes like SparseGenMatProd, enabling efficient computation of a few eigenvalues without full decomposition, ideal for scientific simulations.
Users define custom matrix operations such as matrix-vector multiplication, allowing support for implicit or specialized matrix structures, as shown in the user-supplied class example.
Includes multiple eigen solvers for symmetric, general, Hermitian, and generalized problems, with shift-and-invert modes for targeted eigenvalue searches, catering to diverse numerical needs.
Version 1.0.0 introduced API-breaking changes requiring a migration guide, which can disrupt existing codebases and increase maintenance effort, as noted in the README.
Focused solely on eigenvalue problems, lacking support for other linear algebra operations like matrix factorizations or linear system solving, which may necessitate additional libraries.
Tied to the Eigen library, which may not be compatible with projects using alternative linear algebra frameworks or those aiming for minimal external dependencies.
Spectra is an open-source alternative to the following products: