Seldon User's Guide

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

Download the last version of Seldon : seldon.tar.bz2