Skip to content

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 28 Jun 19:52
741d699

A breaking rewrite focused on real-time latency, ease of use, maintainability, and strict no_std.

Added

  • Infinite and semi-infinite integration limits for the iterative integrators (use f64::INFINITY /
    f64::NEG_INFINITY), via a domain transform. Accurate for convergent, decaying integrands.
  • A runnable example for every module under examples/, and BENCHMARKS.md with accuracy and
    latency figures.
  • A criterion benchmark suite under benches/, plus deterministic work-count regression tests that
    fail if a latency optimization is reverted.
  • CalcError implements core::error::Error and Display.

Changed

  • f64-only API. Dropped the num_complex::ComplexFloat generic; transcendental functions now
    come from libm, so the crate is genuinely no_std.
  • Errors are a typed CalcError enum instead of &'static str strings.
  • Functions and integrands are taken as generic F: Fn(...) (monomorphized) rather than &dyn Fn.
  • Removed the redundant runtime "number of integrations" / "derivative order" arguments; these are
    now inferred from the const-generic array lengths.
  • Renamed the solver types to FiniteDifferenceSingle/Multi, IterativeSingle/Multi, and
    GaussianSingle/Multi.
  • Unified the vector-field calling convention: line and flux integrals now take
    &[&dyn Fn(&[f64; N]) -> f64; N], matching curl and divergence.
  • Gaussian quadrature takes the bare integrand; the tabulated weights carry the e^{-x^2} / e^{-x}
    weighting factor.
  • Per-solver settings are now a plain-data config field (e.g. solver.config.method = ...) instead
    of getters and setters.
  • Renamed the heap feature to alloc.
  • Default iterative interval count is now 120 (a multiple of 12) so the Boole and Simpson rules stay
    exact.

Fixed

  • Gauss-Hermite and Gauss-Laguerre no longer double-apply the weighting function.
  • Gauss-Laguerre multi-fold recursion (it read the Legendre table and failed to decrement the fold).
  • The 3D line-integral z-component, and the reversed / equal / NaN limit checks (negative ranges
    such as [-2.0, 1.0] are now accepted).
  • The linear and quadratic approximation formulas and their goodness-of-fit metrics.

Removed

  • The num-complex dependency, the ComplexFloat generic, and f32 / complex-number support.