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).
Seldon is interfaced with Blas (levels 1, 2 and 3) and Lapack, except for functions involving banded matrices (since this format is not available for the moment). 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 of MUMPS, SuperLU and UmfPack. There is a bunch of iterative solvers available in Seldon such as Gmres, BiCgSTAB, Qmr, etc. Thanks to templates, 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 includes many other features that are described in the documentation.
The library has a Python interface generated by SWIG.
Seldon is provided under the GNU Lesser General Public License (LGPL).