Sparse Matrix Eigenvalue / Eigenvector for C++

I'm aware of ARPACK / ARPACK++, but those are basically Fortran.

Does anyone know of any good sparse matrix libraries for huge eigenvalue/eigenvector problems? Usually, I'd like to say "here's my matrix, now solve for the X smallest eigenvalues..."

Thanks a lot in advance!

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

The question is hard to

The question is hard to answer in general without knowing details about your problem:
- Are your matrices real-symmetric, hermitian, non-hermitian, ...?
- Do you need to solve "ordinary" or generalized eigenvalue problems?
- Do you need only smallest/largest, or also interior eigenvalues?
- Is there some additional knowledge about the form of your matrices you could exploit? If you can, for instance, use spectral or split-operator methods, this could give you a considerable advantage over more general solvers (often orders of magnitude in computation time).
- And, out of curiosity, what does "huge" mean?

That said, the trilinos project provides some fairly general solvers, among them Block-KS, Block-Davidson and LOBPCG: http://trilinos.sandia.gov/packages/anasazi/. I have never used the library myself, though.

Boost provides pretty decent sparse matrix and vector classes, which are convenient in case you want to roll your own solver (that's what I have used so far, but I have to deal with one of the "have special knowledge about the matrix" cases).