Part of a project I'm working on right now requires solving for a handful of eigenvalues (and associated eigenvectors) with the smallest absolute value of large matrices. The matrices are large enough that solving for all of the eigenvalues is impractical. If I were writing this program for matlab or octave, it would a perfect application of the eigs function. In fact, I was trying to do exactly this initially using the Octave c++ header files, but I ran into some trouble.
In attempting to follow the instructions from:
http://techlogbook.wordpress.com/2008/11/10/calling-arpack-functions-from-c-using-liboctave/
I ran into some difficulty, this guide was written for octave pre-3.0 and a critical file (eigs.cc) was missing. (yes, there is eigs-base.cc still but I can't figure out how to interface with it) I was able to find a copy of eigs.cc, but it was written for octave pre-3.0, and I receive more compiler errors than I know what to do with. (just using g++)
Has anyone here attempted or, better, succeeded at implementing eigs in c++?
Is there another way of attaining this functionality? (these are large, complex matrices, which is awful, I know, but they are sparse and symmetric.)
I've checked out the LAPACK site, but I'm at a bit of a loss as it walks me into a land of alphabet soup function names. (and I'm under the impression that I need ARPACK, not just LAPACK)
If anyone has any experience with this problem, I would appreciate hearing from you.