diff options
| author | y-jan137 <yousefjan24000@gmail.com> | 2026-03-15 14:08:51 +0300 |
|---|---|---|
| committer | y-jan137 <yousefjan24000@gmail.com> | 2026-03-15 14:08:51 +0300 |
| commit | 606ad99e8363bd520506ea2e88b831911fe03c18 (patch) | |
| tree | 47a422beed4a53005d4dfdc7c9dab5aa6325274d /README.md | |
| parent | be01607041d2ded41e5bf39a0a8e17ffb9bcc296 (diff) | |
Add QR iteration algos
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 16 |
1 files changed, 7 insertions, 9 deletions
@@ -1,8 +1,8 @@ # Numerical Linear Algebra This repo contains a small C++ dense numerical linear algebra library for `double`, with a companion experiments directory for evaluating performance. - -The current matmul uses a vectorized dot-product kernel. The implementation supports compile-time SIMD backends for `AVX`, `AVX2`, `AVX512`, and `NEON` on `AArch64`/`ARM64` with FP64 vector support. +I mostly follow Trefethen & Bau, "Numerical Linear Algebra" +The implementation supports compile-time SIMD backends for `AVX`, `AVX2`, `AVX512`, and `NEON` on `AArch64`/`ARM64` with FP64 vector support. ## Build @@ -31,17 +31,15 @@ ctest --test-dir build --output-on-failure - Triangular solvers (forward / backward substitution) - LU factorization with partial pivoting (`lu_factor`, `lu_solve`) - QR factorization — classical GS, modified GS, and Householder (`qr_classical_gs`, `qr_modified_gs`, `qr_householder`) - -## Run examples - -```bash -./build/linear_system -./build/matmul -``` +- Eigenvalue computation via QR iteration: + - Unshifted QR (`eigenvalues_unshifted`) — linear convergence, T&B Algorithm 28.1 + - Wilkinson-shifted QR (`eigenvalues_shifted`) — typically cubic convergence, T&B Lecture 29 + - Hessenberg + Givens QR (`eigenvalues_hessenberg`) — O(n²) per step after one O(n³) reduction; ~10–30× faster than `eigenvalues_shifted` for n ≥ 50 ## Run experiments ```bash +./build/matmul ./build/pivoting_vs_no_pivoting ./build/hilbert_qr ``` |