Improvements
- Use
sort_unstable_byinstead ofsort_byfor allf64sorts, eliminating O(n) heap allocations per sort call (typically 10–20% faster) - Reduce allocations in
spread_boundsby 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_addwhere it improves FMA fusion, and revert unreadable mechanical conversions in complex statistical formulas
Bug Fixes
- Fix Stirling approximation expression in
log_gammaformin_misrate - Fix
gauss_cdfasymmetry: use consistent explicit arithmetic(z + 1.0) / 2.0in both branches instead of mixingf64::midpointand manual formula - Use
total_cmpinstead ofpartial_cmp().unwrap()infast_center_quantilesfor consistency and to avoidOptionoverhead - Replace
mul_addweight expressions in estimators andavg_spreadwith explicit(n*... + m*...)/(n+m)for clarity - Use simple arithmetic for median/high-rank calculations in
fast_centerandfast_spreadinstead ofmidpoint
Internal
- Remove custom release profile from
Cargo.toml - Remove
#[inline]fromgauss_cdf(superseded by targeted inlining strategy) - Apply
rustfmtformatting fixes
Full Changelog: https://github.com/AndreyAkinshin/pragmastat/compare/v12.0.0...v12.0.1
Release notes generated by herald v1.0.4