You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Add typed errors for unsupported runtime dimensions, out-of-bounds indices,
invalid tolerances, and asymmetric matrices.
- Add checked matrix accessors and stack-matrix runtime dispatch up to D=7.
- Validate symmetry, tolerances, and non-finite entries before symmetry checks
and factorization return typed errors.
- Update LDLT documentation and README guidance for runtime asymmetry rejection.
BREAKING CHANGE: Matrix::is_symmetric now returns Result<bool, LaError>, and
Matrix::first_asymmetry now returns Result<Option<(usize, usize)>, LaError>.
BREAKING CHANGE: LaError no longer implements Eq because InvalidTolerance
stores the original f64 tolerance value.
BREAKING CHANGE: Matrix::ldlt rejects asymmetric inputs with LaError::Asymmetric,
and LU/LDLT reject negative, NaN, or infinite tolerances with
LaError::InvalidTolerance.
Fast, stack-allocated linear algebra for fixed dimensions in Rust.
15
17
16
18
This crate grew from the need to support [`delaunay`](https://crates.io/crates/delaunay) with fast, stack-allocated linear algebra primitives and algorithms
@@ -117,14 +119,13 @@ let det = a.ldlt(DEFAULT_SINGULAR_TOL).unwrap().det();
117
119
assert!((det-1.0).abs() <=1e-12);
118
120
```
119
121
120
-
> ⚠️ **LDLT precondition:** The input matrix must be **symmetric**. Symmetry is
121
-
> verified by a `debug_assert!` in debug builds only; release builds silently accept
122
-
> asymmetric inputs and produce a meaningless factorization. Pre-validate with
122
+
> ⚠️ **LDLT invariant:** The input matrix must be **symmetric**. Asymmetric
123
+
> inputs return a typed `LaError::Asymmetric` before factorization starts.
0 commit comments