C++ Library For Large Scale Eigenvalue Problems


Spectra stands for Sparse Eigenvalue Computation Toolkit as a Redesigned ARPACK. It is a C++ library for large scale eigenvalue problems, built on top of Eigen, an open source linear algebra library.

Spectra is implemented as a header-only C++ library, whose only dependency, Eigen, is also header-only. Hence Spectra can be easily embedded in C++ projects that require calculating eigenvalues of large matrices.

The development page of Spectra is https://github.com/yixuan/spectra/.

Key Features

  • Calculates a specified number of eigenvalues/eigenvectors of a large square matrix
  • High performance. In most cases faster than ARPACK
  • Header-only. Easy to be embedded into other projects
  • Supports symmetric/general, dense/sparse matrices
  • Elegant and user-friendly API with great flexibility
  • Convenient and powerful R interface - The RSpectra package

Relation to ARPACK

ARPACK is a software written in FORTRAN for solving large scale eigenvalue problems. The development of Spectra is much inspired by ARPACK, and as the whole name indicates, Spectra is a redesign of the ARPACK library using C++ language.

In fact, Spectra is based on the algorithms described in the ARPACK Users’ Guide, but it does not use the ARPACK code, and it is NOT a clone of ARPACK for C++. In short, Spectra implements the major algorithms in ARPACK, but Spectra provides a completely different interface, and it does not depend on ARPACK.


See the Quick Start page for some minimal examples that demonstrate the basic use of Spectra.

The complete API Reference generated by Doxygen is also available, including all the background knowledge, example code and class APIs.

The reference for the RSpectra package can be found in the R Interface page.

Contributing to Spectra

Spectra is open source. Bug reports, suggestions and feature requests are welcome on the development page. Code contribution and pull requests would be great.


Spectra is an open source project licensed under MPL2.