Skip to content

v0.3.1

Latest

Choose a tag to compare

@basnijholt basnijholt released this 10 Jun 22:30
0203515

Patch release: degenerate input to simplex_volume_in_embedding (collinear, coplanar, or coincident vertices) now yields volume 0.0 like the reference implementation, instead of raising ValueError (#15).

adaptive's curvature losses feed degenerate vertex sets whenever the sampled function is locally flat, so with adaptive ≥ 1.5 auto-selecting this backend, LearnerND runs with curvature_loss_function() crashed where the pure-Python backend returned a zero loss. The fix mirrors the reference's tolerance contract: a Cayley-Menger squared volume within rounding noise of zero (> -1e-15) is a zero-volume simplex; only below that band is it an error. For three vertices in a >2D embedding the squared-distance Cayley-Menger form replaces root-based Heron so rounding near zero behaves like the reference's determinant.

With this release the full adaptive 1.5.0 test suite passes with the Rust backend active (283 passed; previously 7 curvature-loss failures), clearing the way for adaptive to bump _MIN_RUST_VERSION and run the Rust backend in CI.

Full changelog: v0.3.0...v0.3.1