Skip to content

Linear algebra

Factorizations, solvers, eigenvalues and the SVD. Every factorization is solved by solve(F, b, x), and the raw-pointer overloads work on caller-owned buffers.

The solve protocol <linear/solve.hpp>

factorization – solve_transpose

Mixed precision <linear/factorization/mixed_lu.hpp>

mixed_lu – mixed_precision – mixed_precision_structure

Banded <linear/banded/banded.hpp>

band_mat – banded_lu_result – banded_matvec – banded_gemv – banded_norm1 – banded_factor – banded_solve – solve

Tridiagonal <linear/factorization/thomas.hpp>

thomas – seq::thomas – lapack::thomas

Complex tridiagonal <linear/factorization/tridiag_complex.hpp>

complex_tri_diag

Choosing a factorization <linear/factorization/factor.hpp>

sparse – sparse_structure – blocks – block_structure – similar_factor

Factor reuse <linear/factorization/reuse.hpp>

corrected_lu – suffix_block_lu

Low-rank updates <linear/factorization/woodbury.hpp>

woodbury_solver – low_rank_difference – low_rank_update – update_inverse_rows – inverse_rows_workspace

Inverse diagonal <linear/factorization/inverse_diagonal.hpp>

inverse_diagonal – inverse_diagonal_workspace – inverse_principal_block – selected_inverse – safe_add

Probed inverse diagonal <linear/factorization/probed_inverse_diagonal.hpp>

inverse_diagonal_options

Conditioning <linear/condition.hpp>

rcond – inverse_norm1_estimate – opnorm1

Matrix properties <linear/matrix_properties.hpp>

linear::is_symmetric – linear::make_symmetric – linear::symmetry_error – linear::relative_symmetry_error

Sparse checks <linear/debug.hpp>

linear::debug::verify_sparse_structure

Conjugate gradient <linear/solvers/cg.hpp>

cg – cg_options – unsafe::cg – krylov_result

Preconditioned CG <linear/solvers/pcg.hpp>

pcg – pcg_options

MINRES <linear/solvers/minres.hpp>

minres – minres_options

GMRES <linear/solvers/gmres.hpp>

gmres – gmres_options

Stationary iterations <linear/solvers/jacobi.hpp>

jacobi

Gauss-Seidel <linear/solvers/gauss_seidel.hpp>

gauss_seidel

Solver results <linear/solvers/solver_result.hpp>

solver_result

Solver callables <linear/solvers/linear_solver.hpp>

linear_solver

Diagonal preconditioners <linear/solvers/preconditioner.hpp>

jacobi_preconditioner – make_jacobi_preconditioner

Automatic solver <linear/solvers/auto_linear.hpp>

auto_linear_solver – auto_linear_options

Hessenberg resolvent <linear/solvers/hessenberg_resolvent.hpp>

hessenberg_resolvent – hessenberg_shifted_lu – shift – solve_batch

Sparse resolvent <linear/solvers/sparse_resolvent.hpp>

sparse_resolvent – sparse_shifted_lu – sparse_resolvent_options – sparse_resolvent_available

Automatic resolvent <linear/solvers/auto_resolvent.hpp>

auto_resolvent – auto_shifted_lu – auto_resolvent_options

Matrix exponential <linear/expv/expv.hpp>

expv

KLU <linear/sparse/klu.hpp>

klu_factorization – klu_available

UMFPACK <linear/sparse/umfpack.hpp>

umfpack_factor – umfpack_available

Sparse operator <linear/sparse/sparse_op.hpp>

operators::sparse_op

Symmetric eigenvalues <linear/eigen/jacobi_eig.hpp>

eig_sym – eigen_result – seq::eig_sym – omp::eig_sym – lapack::eig_sym – unsafe::eig_sym – jacobi_rotation

Lanczos <linear/eigen/lanczos.hpp>

lanczos – lanczos_result – unsafe::lanczos – sqrt_lanczos – inverse_sqrt_lanczos – lanczos_action_result

Power iteration <linear/eigen/power.hpp>

power_iteration – inverse_iteration – rayleigh_iteration – power_result

SVD <linear/svd/svd.hpp>

svd – svd_truncated – svd_result – seq::svd – lapack::svd

Graph levels <linear/graph/levels.hpp>

graph_distance_levels

Approximate Cholesky solves <linear/graph/randommat/solve.hpp>

randommat::solve