Releases: Axect/Peroxide
Releases · Axect/Peroxide
v0.41.0
Release 0.41.0 (2026-03-15)
Replace enum AD with const-generic Jet<N> (Breaking Change)
Core
- Replace
enum AD { AD0(f64), AD1(f64,f64), AD2(f64,f64,f64) }withstruct Jet<const N: usize> - Normalized Taylor coefficients — all arithmetic uses simple convolution (no binomial coefficients)
- Arbitrary-order forward AD:
Jet<1>,Jet<2>, ...,Jet<10>, etc. - Type aliases:
Dual = Jet<1>,HyperDual = Jet<2> - Direct
sqrtrecurrence (instead ofpowf(0.5))
Proc Macro (peroxide-ad)
#[ad_function]now generatesf_ad<const JET_ORDER: usize>(x: Jet<JET_ORDER>) -> Jet<JET_ORDER>— arbitrary-order differentiationad_closure!generatesJet<1>closure
Backward Compatibility
ADtype alias (= Jet<2>),AD0,AD1,AD2constructor functions preservedADFn,ADVec,StableFnimpls preservedRealtrait implemented forJet<2>(viaADalias)
Integration Updates
jacobian(),newton(),Optimizerupdated to useJet<1>internallynewton!macro works with new proc macro output
Documentation
- KaTeX-rendered math in all doc comments (recurrences for exp, ln, sin/cos, sqrt, inverse trig)
- Accuracy plot:
Jet<N>vs finite differences - Taylor convergence plot:
sin(x)polynomial approximation - New examples:
jet_ad.rs,higher_order_ad.rs - Updated examples:
hessian.rs,real_trait_test.rs - 115 new Jet-specific unit tests
Migration Guide
| Old (0.40.x) | New (0.41.0) |
|---|---|
AD1(x, dx) |
AD1(x, dx) (still works) or Jet::<1>::var(x) |
AD2(x, dx, ddx) |
AD2(x, dx, ddx) (still works) or Jet::<2>::var(x) |
fn f(x: AD) -> AD |
fn f(x: AD) -> AD (still works) or fn f(x: Jet<2>) -> Jet<2> |
f_ad(x: AD) (macro) |
f_ad::<N>(x: Jet<N>) (now generic) |
Fn(&Vec<AD>) -> Vec<AD> |
Fn(&Vec<AD>) -> Vec<AD> (still works) |
v0.40.0
Release 0.40.0 (2025-07-24)
Move from arrow2 to arrow & parquet
- Remove
arrow2dependency - Add
arrowandparquetdependencies - Update
WithParquetimplementation - On user side, there are almost no changes in
DataFrameAPI, but there is one change forfugauser:CompressionOptions->UNCOMPRESSED,SNAPPY,GZIP(level),LZ4,ZSTD(level),BROTLI(level),LZO,LZ4_RAW- For
prelude user, there are completely no changes. Default compression isSNAPPY.
Release 0.39.11 (2025-07-22)
- Implement
derivativeandintegralof B-Spline
Full Changelog: v0.39.11...v0.40.0
v0.39.10
Release 0.39.10 (2025-07-11)
- Fixed a bug in the adaptive step size control for all embedded Runge-Kutta methods.
- Corrected the
BUcoefficient vector for the 7th order solution in theRKF78implementation.
Release 0.39.9 (2025-07-10)
- Change implementation of Gauss-Legendre 4th order method
Full Changelog: v0.39.8...v0.39.10
v0.39.8
Release 0.39.8 (2025-06-23)
- Implement
LogNormaldistributionLogNormal(mu: f64, sigma: f64)
- Fix sampling method for
Gamma
Full Changelog: v0.39.7...v0.39.8
v0.39.7
Release 0.39.7 (2025-05-27)
- Add some methods for
DataFramefilter_by<F: Fn(Scalar) -> bool>(&self, column: &str, f: F) -> anyhow::Result<DataFrame>
: Filter rows by a condition on a specific columnmask(&self, mask: &Series) -> anyhow::Result<DataFrame>
: Filter rows by a boolean maskselect_rows(&self, indices: &[usize]) -> DataFrame
: Select specific rows by indices
Release 0.39.6 (2025-05-16)
- New ODESolver:
RKF78- Implement
RKF78method forODESolver
- Implement
Full Changelog: v0.39.5...v0.39.7
v0.39.5
Release 0.39.5 (2025-04-21)
- New feature
rkyv- Implement
rkyv::{Archive, Serialize, Deserialize}forMatrix,Polynomial,Spline,ODE
- Implement
Full Changelog: v0.39.4...v0.39.5
v0.39.4
Release 0.39.4 (2025-04-11)
Optimize integrate
- Replace the output signature of
gauss_legendre_tableandkronrod_tableto&'static [f64]to avoid unnecessary allocations. - Hard code symmetry of weights and nodes into source code to avoid unnecessary allocations.
- New helper function -
compute_gauss_kronrod_sum_stored- Reduce the number of function calls (G+K -> K)
- Change update method of subinterval tolerance (divide by 2 -> divide by sqrt(2))
- These changes improve the performance of
integrateby 1.2x - 50x (to integrate highly oscillatory functions)
Update dependencies
- Update
randto0.9 - Update
rand_distrto0.5
Full Changelog: v0.39.3...v0.39.4
v0.39.3
v0.39.2
v0.39.1
Release 0.39.1 (2025-02-06)
-
Add
lambert_wdoc for crate docs #82 (Thanks to @JSorngard) -
Add default signature for
linspace!#85 (Thanks to @tarolling) -
Fix a bug in
ButcherTableau::step -
Add another example for ODE (
examples/ode_test_orbit.rs)
What's Changed
- Add Lambert W function to list of special functions in crate docs by @JSorngard in #82
- ADD: add default signature for linspace macro by @tarolling in #85
New Contributors
- @tarolling made their first contribution in #85
Full Changelog: v0.39.0...v0.39.1