Skip to content

num::svd

Defined in header <linear/svd/svd.hpp>

svd_result svd(const mat<real> &A, real tol = 1e-12, idx max_sweeps = 100);

Compute full singular value decomposition \(A = U \Sigma V^T\).

Uses LAPACK dgesdd when configured, else in-tree one-sided Jacobi sweeps. Call num::lapack::svd or num::seq::svd to force one.

Parameters

  • A: Input \(m \times n\) dense matrix.
  • tol: Orthogonality tolerance for Jacobi sweeps (default: 1e-12).
  • max_sweeps: Maximum one-sided Jacobi sweeps (default: 100).

Return value

svd_result with left singular vectors \(U\), singular values \(\Sigma\), and transposed right vectors \(V^T\).

See also

svd_truncated, eig_sym, qr