Seldon is a C++ library for linear algebra. It provides different matrix and vector structures, and many functions for computations (linear algebra). Seldon is designed to be efficient and convenient, which is notably achieved thanks to template classes. Exception handling and several debug levels are helpful while coding.
Seldon provides matrices for two main categories: dense matrices and sparse matrices. Among dense matrices, there are specific structures for rectangular matrices, symmetric matrices, hermitian matrices and triangular matrices. Each type includes several formats. E.g., rectangular dense matrices may be stored by rows or by columns; symmetric dense matrices may be stored as rectangular matrices or only upper part of the matrix is stored (this is the packed form of Blas format).
Seldon is interfaced with Blas (levels 1, 2 and 3) and Lapack. If Blas is not available to the user, a few alternative functions (same functions written in C++) may be used.
For sparse matrices, Seldon is interfaced with direct solvers such as MUMPS, SuperLU or UmfPack. There is a bunch of iterative solvers available in Seldon such as Gmres, BiCgSTAB, Qmr, etc. Thanks to templates (or virtual functions), these solvers can be used for any type of matrix and preconditioning, not only Seldon matrices. This is very useful when the user does not store the matrix, but is able to perform a matrix-vector product. Seldon is also interfaced with eigenvalue solvers such as Arpack or Slepc. Seldon includes many other features that are described in this documentation.
Seldon is provided under the GNU Lesser General Public License (LGPL).