Cynopolis ac4bef88fc 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
2026-08-19 14:05:44 -04:00
2025-05-21 17:46:49 -04:00
2025-06-30 14:52:48 -04:00

Introduction

This matrix math library is focused on embedded development and avoids any heap memory allocation unless you explicitly ask for it. It uses templates to pre-allocate matrices on the stack.

Building

  1. Initialize the repositiory with the command:
cmake -S . -B build -G Ninja
  1. Go into the build folder and run ninja
  2. That's it. You can test out the build by running ./unit-tests/matrix-tests
S
Description
A light weight C++ object for 3d math operations on embedded platforms
Readme
1.4 MiB
Languages
C++ 89%
Python 10.1%
CMake 0.9%