Skip to content

linear/

Umbrella include for linear algebra routines.

banded matrix storage and solvers <linear/banded/banded.hpp>

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

Condition number estimates from any factorization <linear/condition.hpp>

inverse_norm1_estimate – opnorm1 – rcond

Runtime validation of structural invariants carried by stored matrices <linear/debug.hpp>

linear::debug::verify_sparse_structure

Full symmetric eigendecomposition via cyclic Jacobi sweeps <linear/eigen/jacobi_eig.hpp>

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

Lanczos eigensolver for symmetric operators <linear/eigen/lanczos.hpp>

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

Power iteration, inverse iteration, Rayleigh quotient iteration <linear/eigen/power.hpp>

inverse_iteration – power_iteration – power_result – rayleigh_iteration

Krylov subspace matrix exponential-vector product: compute exp(tA)v <linear/expv/expv.hpp>

expv

Block LU and block Cholesky for block-tridiagonal sparse matrices <linear/factorization/block_tridiagonal.hpp>

block_cholesky_factor – block_lu_factor – factor_block_cholesky – factor_block_lu – refactor_block_cholesky_suffix – refactor_block_lu_suffix – solve_in_place – solve_transpose_in_place

Dense Cholesky factorization for SPD matrices <linear/factorization/cholesky.hpp>

cholesky – cholesky_block – cholesky_blocked – cholesky_downdate – cholesky_result – cholesky_solve – cholesky_update – lapack::cholesky – linear::is_spd – linear::make_spd – unsafe::cholesky

Factor a matrix once and solve against any number of right-hand sides <linear/factorization/factor.hpp>

block_structure – blocks – similar_factor – sparse – sparse_structure

Upper Hessenberg decomposition A = Q H Q^T via Householder reflections <linear/factorization/hessenberg.hpp>

hessenberg – hessenberg_back_project – hessenberg_decomposition – hessenberg_project – hessenberg_shifted_factor – hessenberg_shifted_solve – hessenberg_shifted_substitute – lapack::hessenberg – seq::hessenberg

Diagonal of an inverse from reusable factorizations <linear/factorization/inverse_diagonal.hpp>

inverse_diagonal – inverse_diagonal_workspace – inverse_principal_block – safe_add – selected_inverse

LU factorization, with partial pivoting or without, in any floating-point precision <linear/factorization/lu.hpp>

det – inverse – lapack::lu – lower – lu_diagonal_shift_derivative – lu_factor – lu_factor_blocked – lu_invert – lu_no_pivot – lu_no_pivot_solve_multiple – lu_no_pivot_solve_transpose_multiple – lu_result – lu_solve – no_pivot – no_pivot_structure – seq::lu – upper

LU in single precision, refined to double-precision accuracy <linear/factorization/mixed_lu.hpp>

mixed_lu – mixed_precision – mixed_precision_structure

Randomized estimate of diag(A^-1) for a nonsingular M-matrix <linear/factorization/probed_inverse_diagonal.hpp>

ac – ac2 – grounded_approxchol_factor – inverse_diagonal_options

QR factorization via Householder reflections <linear/factorization/qr.hpp>

householder_left – householder_right – householder_vector – householder_vector_strided – lapack::qr – qr – qr_apply_block_left – qr_block – qr_factor_blocked – qr_form_block – qr_result – qr_workspace – seq::qr

Factor R again from the factor of a matrix that differs at a few slots <linear/factorization/reuse.hpp>

corrected_cholesky – corrected_factor – corrected_lu – suffix_block_cholesky – suffix_block_lu

Pure template Thomas algorithm for tridiagonal systems <linear/factorization/thomas.hpp>

lapack::thomas – seq::thomas – thomas

Precomputed Thomas solver for constant-coefficient complex systems <linear/factorization/tridiag_complex.hpp>

complex_tri_diag

Low-rank corrected solves against a retained factorization <linear/factorization/woodbury.hpp>

inverse_rows_workspace – low_rank_difference – low_rank_update – update_inverse_rows – woodbury_solver

Block-tridiagonal level labels from graph distance <linear/graph/levels.hpp>

graph_distance_levels

Randomized Approximate Cholesky (ApproxChol) factorizations and SDD/Laplacian preconditioners <linear/graph/randommat/approxchol.hpp>

randommat::ac1 – randommat::ac2 – randommat::act – randommat::exact – randommat::factorize – randommat::gao_kyng_spielman_2023::ac – randommat::gao_kyng_spielman_2023::ac2

Substitution and solve routines for Approximate Cholesky factors <linear/graph/randommat/solve.hpp>

randommat::solve

Core types and factor representations for Randomized Numerical Linear Algebra (RandNLA) <linear/graph/randommat/types.hpp>

randommat::adjacency_list – randommat::cholesky_factor – randommat::factor_column – randommat::factor_entry – randommat::get_entry – randommat::graph_edge – randommat::neighbor

Exact symmetry and definiteness checks for dense matrices, and the laws they attach <linear/matrix_properties.hpp>

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

Small dense matrix construction and diagonal utilities <linear/matrix_utils.hpp>

accu – diagonal_matrix – divide_elements – divide_rows – eye – gather – identity – identity_columns – ones – scale_elements – scale_rows – scatter – set_diagonal – unit_vector – zeros

The solve protocol every factorization follows <linear/solve.hpp>

factorization – solve_transpose

Automatic dense/sparse factorization for reusable real solves <linear/solvers/auto_linear.hpp>

auto_linear_options – auto_linear_solver

Automatic dense/sparse shifted-resolvent selection <linear/solvers/auto_resolvent.hpp>

auto_resolvent – auto_resolvent_options – auto_shifted_lu

Conjugate gradient solvers <linear/solvers/cg.hpp>

cg – cg_options – krylov_result – unsafe::cg

Matrix-free Chebyshev polynomial preconditioner <linear/solvers/chebyshev.hpp>

chebyshev_preconditioner – chebyshev_preconditioner_from_below – estimate_largest_eigenvalue – make_chebyshev_preconditioner

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

gauss_seidel

Evidence-constrained restarted GMRES <linear/solvers/gmres.hpp>

gmres – gmres_options

O(n^2)-per-shift complex resolvent solves from one Hessenberg decomposition <linear/solvers/hessenberg_resolvent.hpp>

hessenberg_resolvent – hessenberg_shifted_lu – shift – solve_batch

Incomplete LU preconditioner with zero fill-in, ILU(0) <linear/solvers/ilu.hpp>

csr_diagonal_positions – csr_lu_solve – ilu0_factor – ilu0_preconditioner – make_ilu0_preconditioner

Jacobi iterative solver <linear/solvers/jacobi.hpp>

jacobi

Universal linear solver callable type <linear/solvers/linear_solver.hpp>

linear_solver

Evidence-constrained minimum residual iteration <linear/solvers/minres.hpp>

minres – minres_options

Evidence-constrained preconditioned conjugate gradient <linear/solvers/pcg.hpp>

pcg – pcg_options

preconditioner concept and diagonal preconditioners <linear/solvers/preconditioner.hpp>

jacobi_preconditioner – make_jacobi_preconditioner

Common result type shared by all iterative solvers <linear/solvers/solver_result.hpp>

solver_result

Shifted sparse resolvent plans with optional SuiteSparse backend <linear/solvers/sparse_resolvent.hpp>

sparse_resolvent – sparse_resolvent_available – sparse_resolvent_options – sparse_shifted_lu

Optional SuiteSparse KLU factorization for real sparse matrices <linear/sparse/klu.hpp>

klu_available – klu_factorization

Compressed Sparse Row (CSR) matrix and operations <linear/sparse/sparse.hpp>

dense – diagonal – diagonal_similarity – sparse_congruence – sparse_diagonal_similarity – sparse_matvec – spmat – symmetric_part – transpose

spmat adapter for the operator protocol <linear/sparse/sparse_op.hpp>

operators::sparse_op

Optional SuiteSparse UMFPACK factorization for real sparse matrices <linear/sparse/umfpack.hpp>

umfpack_available – umfpack_factor

Subspace construction and orthogonalization kernels <linear/subspace.hpp>

dispatch::subspace::arnoldi_step – dispatch::subspace::mgs_orthogonalize – mgs_columns

Dense and randomized truncated SVD <linear/svd/svd.hpp>

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