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).**