Improvements

  • Use sort_unstable_by instead of sort_by for all f64 sorts, eliminating O(n) heap allocations per sort call (typically 10–20% faster)
  • Reduce allocations in spread_bounds by replacing two separate buffers with a single in-place buffer for better cache locality
  • Add #[inline] hints to hot-path functions (xoshiro256::next_u64, gauss_cdf)
  • Apply mul_add where it improves FMA fusion, and revert unreadable mechanical conversions in complex statistical formulas

Bug Fixes

  • Fix Stirling approximation expression in log_gamma for min_misrate
  • Fix gauss_cdf asymmetry: use consistent explicit arithmetic (z + 1.0) / 2.0 in both branches instead of mixing f64::midpoint and manual formula
  • Use total_cmp instead of partial_cmp().unwrap() in fast_center_quantiles for consistency and to avoid Option overhead
  • Replace mul_add weight expressions in estimators and avg_spread with explicit (n*... + m*...)/(n+m) for clarity
  • Use simple arithmetic for median/high-rank calculations in fast_center and fast_spread instead of midpoint

Internal

  • Remove custom release profile from Cargo.toml
  • Remove #[inline] from gauss_cdf (superseded by targeted inlining strategy)
  • Apply rustfmt formatting fixes

Full Changelog: https://github.com/AndreyAkinshin/pragmastat/compare/v12.0.0...v12.0.1

Release notes generated by herald v1.0.4