ARPACK++ is an object-oriented version of the ARPACK package. ARPACK is a well known collection of FORTRAN subroutines designed to compute a few eigenvalues and eigenvectors of large scale sparse matrices and pencils. It implements a variant of the Arnoldi process for finding eigenvalues called Implicit restarted Arnoldi method (IRAM) and is capable of solving a great variety of problems from single precision positive definite symmetric problems to double precision complex non-Hermitian generalized problems.
ARPACK++ is a collection of classes that offers c++ programmers an interface to ARPACK. It preserves the full capability, performance, accuracy and low memory requirements of the FORTRAN package, but takes advantage of the c++ object-oriented programming environment.
Some of the features included in ARPACK++ are:
The use of templates to reduce the work needed to establish and solve eigenvalue problems and to simplify the structure utilized to handle such problems.
A friendly interface that avoids the complication of the reverse communication interface that characterizes the FORTRAN version of ARPACK. For instance, the user can supply the nonzero elements of a matrix and obtain its eigenvalues and eigenvectors stored using the Standard Template Library (STL) vector class.
The ability to easily find interior eigenvalues and to solve generalized problems. ARPACK++ includes several matrix classes that use routines from SuperLU, UMFPACK and LAPACK to solve linear systems. With these classes, spectral transformations such as the shift and invert method can be employed to find internal eigenvalues of regular and generalized problems without requiring the user to explicitly solve linear systems.
A structure that minimizes the work needed to generate an interface between ARPACK and other libraries, such as the Template Numerical Toolkit (TNT)