Fix SVD pipeline bugs; extract and unit-test bidiagonal block solvers
- Snapshot bidiagonal block before solving (W overwrite corrupted Ublock) - Wide-matrix QL row extent fix (rowsQL = n when transposed) - Vt output copy bound j<columns (was OOB write clobbering caller sigma) - Rank-deficient blocks: residual singular values sigma_i = ||B*v_i|| instead of sqrt(eigs of B*B) (condition-number squaring); Gram-Schmidt orthonormalization of U columns with rank-deficiency completion - JacobiEigenSymmetric: return signed eigenvalues (removed fabsf) - Fix 28 WithinRel(0.0f,.) matcher misuse -> WithinAbs in matrix-tests - New unit tests: SolveBidiagonalBlock2x2 (7 scipy-referenced cases), JacobiEigenSymmetric (3 cases), DeflateBidiagonal/BidiagonalIsDiagonal
This commit is contained in:
@@ -826,7 +826,8 @@ TEST_CASE("SVD: Rank-Deficient 3x3 Matrix", "Matrix") {
|
||||
|
||||
TEST_CASE("SVD: Diagonal 3x3 Matrix", "Matrix") {
|
||||
// For a diagonal matrix, σ = diagonal entries, U = V = I
|
||||
Matrix<3, 3> A{10.0f, 0.0f, 0.0f, 5.0f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f};
|
||||
// Row-major init: [10,0,0, 0,5,0, 0,0,2] = diag(10,5,2)
|
||||
Matrix<3, 3> A{10.0f, 0.0f, 0.0f, 0.0f, 5.0f, 0.0f, 0.0f, 0.0f, 2.0f};
|
||||
Matrix<3, 3> U{}, Vt{};
|
||||
Matrix<3, 1> sigma{};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user