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>
LU <linear/factorization/lu.hpp>
lu – lu_result – no_pivot – no_pivot_structure – lower – upper – det – inverse – seq::lu – lapack::lu – lu_factor – lu_factor_blocked – lu_solve – lu_invert – lu_no_pivot – lu_no_pivot_solve_multiple – lu_no_pivot_solve_transpose_multiple
Mixed precision <linear/factorization/mixed_lu.hpp>
Cholesky <linear/factorization/cholesky.hpp>
cholesky – cholesky_result – cholesky_update – cholesky_downdate – lapack::cholesky – unsafe::cholesky – linear::is_spd – linear::make_spd – cholesky_blocked – cholesky_block – cholesky_solve
QR <linear/factorization/qr.hpp>
qr – qr_result – seq::qr – lapack::qr – householder_vector – householder_vector_strided – householder_left – householder_right – qr_factor_blocked – qr_form_block – qr_apply_block_left – qr_workspace – qr_block
Hessenberg <linear/factorization/hessenberg.hpp>
hessenberg – hessenberg_decomposition – hessenberg_project – hessenberg_back_project – seq::hessenberg – lapack::hessenberg – hessenberg_shifted_factor – hessenberg_shifted_substitute – hessenberg_shifted_solve
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>
Complex tridiagonal <linear/factorization/tridiag_complex.hpp>
Block tridiagonal <linear/factorization/block_tridiagonal.hpp>
block_lu_factor – block_cholesky_factor – factor_block_lu – factor_block_cholesky – refactor_block_lu_suffix – refactor_block_cholesky_suffix – solve_in_place – solve_transpose_in_place
Choosing a factorization <linear/factorization/factor.hpp>
sparse – sparse_structure – blocks – block_structure – similar_factor
Factor reuse <linear/factorization/reuse.hpp>
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>
Conditioning <linear/condition.hpp>
Matrix properties <linear/matrix_properties.hpp>
linear::is_symmetric – linear::make_symmetric – linear::symmetry_error – linear::relative_symmetry_error
Sparse checks <linear/debug.hpp>
Conjugate gradient <linear/solvers/cg.hpp>
cg – cg_options – unsafe::cg – krylov_result
Preconditioned CG <linear/solvers/pcg.hpp>
MINRES <linear/solvers/minres.hpp>
GMRES <linear/solvers/gmres.hpp>
Stationary iterations <linear/solvers/jacobi.hpp>
Gauss-Seidel <linear/solvers/gauss_seidel.hpp>
Solver results <linear/solvers/solver_result.hpp>
Solver callables <linear/solvers/linear_solver.hpp>
Diagonal preconditioners <linear/solvers/preconditioner.hpp>
ILU(0) <linear/solvers/ilu.hpp>
ilu0_preconditioner – make_ilu0_preconditioner – ilu0_factor – csr_lu_solve – csr_diagonal_positions
Chebyshev <linear/solvers/chebyshev.hpp>
chebyshev_preconditioner – chebyshev_preconditioner_from_below – make_chebyshev_preconditioner – estimate_largest_eigenvalue
Automatic solver <linear/solvers/auto_linear.hpp>
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>
Matrix exponential <linear/expv/expv.hpp>
KLU <linear/sparse/klu.hpp>
UMFPACK <linear/sparse/umfpack.hpp>
Sparse operator <linear/sparse/sparse_op.hpp>
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
Subspaces <linear/subspace.hpp>
mgs_columns – dispatch::subspace::mgs_orthogonalize – dispatch::subspace::arnoldi_step
Matrices from graphs <linear/graph/laplacian.hpp>
linear::laplacian – linear::dense_laplacian – linear::markov_generator – linear::dense_markov_generator – linear::to_dense_adjacency – linear::to_sparse_adjacency – linear::to_multigraph
Graph levels <linear/graph/levels.hpp>
Approximate Cholesky <linear/graph/randommat/approxchol.hpp>
randommat::factorize – randommat::exact – randommat::ac1 – randommat::ac2 – randommat::act – randommat::gao_kyng_spielman_2023::ac – randommat::gao_kyng_spielman_2023::ac2
Approximate Cholesky preconditioner <linear/graph/randommat/preconditioner.hpp>
approx_chol_preconditioner – grounded_approx_chol_factor – randommat::approx_chol_preconditioner – randommat::approxchol_preconditioner – randommat::grounded_approx_chol_factor – randommat::grounded_approxchol_factor – randommat::to_approxchol_graph
Approximate Cholesky solves <linear/graph/randommat/solve.hpp>
Approximate Cholesky types <linear/graph/randommat/types.hpp>
randommat::cholesky_factor – randommat::factor_column – randommat::factor_entry – randommat::get_entry – randommat::graph_edge – randommat::neighbor – randommat::adjacency_list