@@ -286,6 +286,12 @@ values were rounded to `f64` before construction.
286286- ** ` ExactF64Conversion ` ** — converts an existing exact determinant or solution
287287 under the strict or rounded contract without repeating exact elimination
288288
289+ Exact determinant value and conversion methods return
290+ ` LaError::DeterminantScaleOverflow ` if the aggregate power-of-two scaling
291+ exceeds the internal exponent representation. Exact solve methods return
292+ ` LaError::Singular ` with ` SingularityReason::Exact ` when the stored matrix is
293+ exactly singular.
294+
289295For exact-to-f64 output, strict conversions use
290296` UnrepresentableReason::RequiresRounding ` when explicit rounding can produce a
291297finite value and ` UnrepresentableReason::NotFinite ` otherwise. Rounded
@@ -379,6 +385,8 @@ the conservative absolute error bound used by the fast filter, computed from
379385one call that evaluates the determinant once and computes its matching bound.
380386It returns ` None ` when a D ≤ 4 computation may be affected by gradual
381387underflow, as well as for unsupported D ≥ 5 dimensions.
388+ It returns ` LaError::NonFinite ` if the determinant or bound computation
389+ overflows to NaN or infinity.
382390This method does NOT require the ` exact ` feature — it uses pure f64 arithmetic
383391and is available by default. Use ` det_errbound() ` when only the bound is needed.
384392The paired API enables custom adaptive-precision logic for geometric predicates:
@@ -460,8 +468,10 @@ Storage shown above reflects the intentional `f64` scalar model.
460468
461469For a runtime dimension from 0 through ` MAX_STACK_MATRIX_DISPATCH_DIM ` (7),
462470` try_with_stack_matrix! ` dispatches to a concrete ` Matrix<N> ` while preserving
463- inline stack storage. Larger dimensions return ` LaError::UnsupportedDimension ` ;
464- the macro does not introduce a dynamically sized matrix representation.
471+ inline stack storage. Larger dimensions produce
472+ ` LaError::UnsupportedDimension ` , converted through ` From<LaError> ` into the
473+ closure's declared ` Result ` error type; the macro does not introduce a
474+ dynamically sized matrix representation.
465475
466476` Matrix<D> ` key methods: ` as_rows ` , ` into_rows ` , ` lu ` , ` ldlt ` , ` det ` ,
467477` det_direct ` , ` det_direct_with_errbound ` , ` det_errbound ` ,
@@ -570,13 +580,14 @@ cargo run --features exact --example exact_solve_3x3
570580
571581A short contributor workflow:
572582
573- Install Rust 1.98.0 through [ rustup] ( https://rustup.rs/ ) , Git, Python 3.14,
583+ Install Rust 1.98.0 through [ rustup] ( https://rustup.rs/ ) , Git,
584+ [ GitHub CLI] ( https://cli.github.com/ ) , Python 3.14,
574585[ ` uv ` 0.12.5] ( https://docs.astral.sh/uv/ ) , and ` jq ` . Then install the pinned
575586` just ` release from its locked dependency graph:
576587
577588``` bash
578589cargo install --locked just --version 1.58.0
579- just setup # install/verify dev tools + sync Python deps
590+ just setup # install/verify dev tools + sync Python deps + build
580591just check # lint/validate (non-mutating)
581592just fix # apply auto-fixes (mutating)
582593just ci # lint + tests + examples + bench compile
0 commit comments