This page introduces the main structures and the functions available in the interface to Blas and Lapack. Other features are described in the documentation.

Available Structures

Vector structures:

  1. Full vectors: Vector<T>
  2. Sparse vectors: Vector<T, VectSparse>

Matrix structures:

  1. Full matrices: Matrix<T>
  2. Sparse matrices: Matrix<T, P, RowSparse>
  3. Alternative sparse matrices: Matrix<T, P, ArrayRowSparse>
  4. Complex sparse matrices: Matrix<T, P, RowComplexSparse>
  5. Alternative complex sparse matrices: Matrix<T, P, ArrayRowComplexSparse>
  6. Symmetric sparse matrices: Matrix<T, P, RowSymSparse>
  7. Symmetric complex sparse matrices: Matrix<T, P, RowSymComplexSparse>
  8. Symmetric matrices: Matrix<T, P, RowSym>
  9. Symmetric packed matrices: Matrix<T, P, RowSymPacked>
  10. Hermitian matrices: Matrix<T, P, RowHerm>
  11. Hermitian packed matrices: Matrix<T, P, RowHermPacked>
  12. Lower triangular matrices: Matrix<T, P, RowLoTriang>
  13. Upper triangular matrices: Matrix<T, P, RowUpTriang>
  14. Lower triangular packed matrices: Matrix<T, P, RowLoTriangPacked>
  15. Upper triangular packed matrices: Matrix<T, P, RowUpTriangPacked>

T can be any type: double, float, int, bool, Vector<double>, ...

P is a property, usually General (i.e., no special property) or Symmetric.

One can always switch to column-oriented storage: simply replace Row with Col; e.g. ColSparse or ColLoTriangPacked.

3D array structure:

  1. Full 3D arrays (provided for convenience): Array3D<T>

The way the vectors, matrices and arrays are allocated can be controlled through a class called "allocator". This allocator is the last template argument of every structure. For instance, a full matrix may be declared as Matrix<double, General, RowMajor> (same as Matrix<double>) or as Matrix<double, General, RowMajor, NaNAlloc<double> > to use an allocator that sets to NaN (not a number) every allocated element.

Interface to Blas and Lapack

Available Blas functions (Seldon functions):

Available Lapack functions (Seldon functions):