Add QR eigen library: implicit Wilkinson-shifted QR for symmetric matrices
Merge-Checker / build_and_test (pull_request) Failing after 28m10s
Merge-Checker / build_and_test (pull_request) Failing after 28m10s
- src/QR.hpp / src/QR.cpp: fully templated QR::EigenQR (N >= 2), no heap allocation (3*N^2 float working buffers on stack). Givens tridiagonalization (bottom-up) + implicit Wilkinson-shifted QR with bulge chasing, relative deflation, exact-zero peeling, closed-form 2x2 termination. - Matrix::EigenQR now delegates to QR::EigenQR (old unshifted body removed); eigenvalues sorted descending, eigenvectors in columns of the output. - unit-tests/qr-build-blocks-tests.cpp: 8 building-block test cases (215 assertions) with scipy/numpy references. - unit-tests/qr-reference-values.py: numpy/scipy reference generator mirroring every building block and the full pipeline (eigh, n=3..8). - CMake: new 'qr' static library; Matrix links against it; qr-build-blocks-tests target enabled.
This commit is contained in:
@@ -13,6 +13,7 @@ add_executable(matrix-tests matrix-tests.cpp)
|
||||
target_link_libraries(matrix-tests
|
||||
PRIVATE
|
||||
matrix
|
||||
qr
|
||||
Catch2::Catch2WithMain
|
||||
)
|
||||
|
||||
@@ -52,4 +53,14 @@ target_link_libraries(svd-integration-test
|
||||
matrix
|
||||
svd
|
||||
Catch2::Catch2WithMain
|
||||
)
|
||||
|
||||
# QR building block tests
|
||||
add_executable(qr-build-blocks-tests qr-build-blocks-tests.cpp)
|
||||
|
||||
target_link_libraries(qr-build-blocks-tests
|
||||
PRIVATE
|
||||
matrix
|
||||
qr
|
||||
Catch2::Catch2WithMain
|
||||
)
|
||||
Reference in New Issue
Block a user