Skip to content

0.4.4

Latest

Choose a tag to compare

@vigna vigna released this 14 Oct 21:00

[0.4.4] - 2026-10-14

Changed

  • Every routine follows the Fortran 90 line by line, including the order of
    the argument checks, so some invalid inputs (e.g., a parameter of −∞)
    report a different error.

  • The integer quantile of the discrete distributions brackets the answer by
    doubling.

  • Error messages are more descriptive and print floating-point values in
    short form.

Improved

  • Fortran 90 reference tables for every kernel, regime, error exit, cdf*
    call and status, and for the iteration traces of dinvr and dzror;
    tests/regenerate/coverage.sh checks that they execute every reachable
    line of cdflib.f90, and tests/regenerate/rust_branch_coverage.sh that
    they take both sides of every branch of the port except those listed with
    a reason.

  • The code comments reproduce the Fortran 90 comments verbatim.

  • The documentation states the behavior at NaN, infinite and endpoint
    arguments, the tolerances of the searches, and the precision limits of
    the noncentral distributions and of the closed-form densities and masses.

  • CI also runs Miri, the tests with the MSRV, semver checks, the Fortran
    coverage check, and the regeneration of the reference tables.

Fixed

  • The reference is the current upstream cdflib.f90, which calls
    gamma_user instead of the intrinsic Γ (fixed upstream after our report).
    The port reproduces every reference table bit for bit, in debug and
    release builds, on macOS on Apple silicon.

  • Inputs on which the Fortran loops forever return NaN or an error, and the
    noncentral distributions panic where the Fortran integers would overflow.

  • Constructors and searches reject parameters on which the Fortran returns
    meaningless values, and several inputs no longer panic.

  • cdf, ccdf and the inverses are exact at the ends of the support, and
    a NaN argument gives NaN.

  • Densities, masses, moments and entropies no longer overflow, underflow or
    lose precision for extreme parameters.

  • try_gamma reports Underflow instead of Overflow below about −171.6.