Linear Algebra

There is a small set of linear algebra routines. These are not intended to be a replacement for higher performance linear algebra libraries. In the case that O2scl was compiled with support for either the Armadillo or Eigen libraries, some O2scl template functions are overloaded with the respective Armadillo or Eigen versions.

The fallback O2scl linear algebra routines offer a more generic and flexible interface: they work for almost all vector and matrix types. For matrix types using `operator(,)`

, the BLAS and linear algebra routines routines are inside the o2scl_cblas and o2scl_linalg namespaces. For matrix types using `operator[][]`

, the BLAS and linear algebra routines are inside the o2scl_cblas_bracket and o2scl_linalg_bracket namespaces.

The linear algebra classes and functions include:

- Householder transformations (householder_base.h)
- Householder solver (hh_base.h)
- LU decomposition and solver (lu.h and lu_base.h)
- Cholesky decomposition (cholesky_base.h)
- QR decomposition and solver (qr_base.h and qrpt_base.h)
- Solve tridiagonal systems (tridiag_base.h)
- Givens rotations (givens_base.h)
- Bidiagonalizations (bidiag_base.h)
- Singular value decompositions (svd_base.h and svdstep_base.h)
- Lanczos diagonalization is inside class o2scl_linalg::lanczos, which also can compute the eigenvalues of a tridiagonal matrix.

There is also a set of linear solvers for generic matrix and vector types which descend from o2scl_linalg::linear_solver. These classes provide GSL-like solvers, but are generalized so that they are compatible with vector and matrix types which allow access through `operator[]`

.

Armadillo and Eigen linear solvers are wrapped to have a consistent interface with the fallback O2scl linear solvers. See o2scl_linalg::linear_solver_arma, o2scl_linalg::linear_solver_eigen_houseQR, o2scl_linalg::linear_solver_eigen_colQR, o2scl_linalg::linear_solver_eigen_fullQR, o2scl_linalg::linear_solver_eigen_partLU, o2scl_linalg::linear_solver_eigen_fullLU, o2scl_linalg::linear_solver_eigen_LLT, and o2scl_linalg::linear_solver_eigen_LDLT.

Specializations for o2scl_linalg::QR_decomp_unpack() are given in the documentation for qr.h .

Documentation generated with Doxygen. Provided under the
GNU Free Documentation License (see License Information).