Recent Releases of peroxide
peroxide - 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: https://github.com/Axect/Peroxide/compare/v0.39.11...v0.40.0
- Rust
Published by Axect 10 months ago
peroxide - 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: https://github.com/Axect/Peroxide/compare/v0.39.8...v0.39.10
- Rust
Published by Axect 11 months ago
peroxide - 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: https://github.com/Axect/Peroxide/compare/v0.39.5...v0.39.7
- Rust
Published by Axect about 1 year ago
peroxide - 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: https://github.com/Axect/Peroxide/compare/v0.39.3...v0.39.4
- Rust
Published by Axect about 1 year ago
peroxide - 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::stepAdd 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 https://github.com/Axect/Peroxide/pull/82
- ADD: add default signature for linspace macro by @tarolling in https://github.com/Axect/Peroxide/pull/85
New Contributors
- @tarolling made their first contribution in https://github.com/Axect/Peroxide/pull/85
Full Changelog: https://github.com/Axect/Peroxide/compare/v0.39.0...v0.39.1
- Rust
Published by Axect over 1 year ago
peroxide - v0.39.0
What's Changed
- Update
lambert_wcrate to version 0.4.0 by @JSorngard in https://github.com/Axect/Peroxide/pull/66 - [feature] Support complex matrix by @soumyasen1809 in https://github.com/Axect/Peroxide/pull/71
- [feature] Support complex matrix [2] by @soumyasen1809 in https://github.com/Axect/Peroxide/pull/73
- IMPL: generic and complex integration by @GComitini in https://github.com/Axect/Peroxide/pull/70
- DOC: Document generic integration by @GComitini in https://github.com/Axect/Peroxide/pull/76
- Rand matrix refactor by @bertini97 in https://github.com/Axect/Peroxide/pull/75
- Make sure mean and variance computations are numerically stable by @Hoff97 in https://github.com/Axect/Peroxide/pull/77
- [Proof of Concept] Initial support for parallelization using Rayon by @soumyasen1809 in https://github.com/Axect/Peroxide/pull/74
- Update
puruspedependency, removelambert_wdependency by @JSorngard in https://github.com/Axect/Peroxide/pull/79 - Hermite and Bessel polynomials added by @jgrage in https://github.com/Axect/Peroxide/pull/80
New Contributors
- @soumyasen1809 made their first contribution in https://github.com/Axect/Peroxide/pull/71
- @bertini97 made their first contribution in https://github.com/Axect/Peroxide/pull/75
- @Hoff97 made their first contribution in https://github.com/Axect/Peroxide/pull/77
- @jgrage made their first contribution in https://github.com/Axect/Peroxide/pull/80
Full Changelog: https://github.com/Axect/Peroxide/compare/v0.37.9...v0.39.0
- Rust
Published by Axect over 1 year ago
peroxide - v0.37.9
Release 0.37.9 (2024-07-31)
- Fix inconsistent lambert w function name #65 (Thanks to @JSorngard)
- Write doc string for special/mod.rs (Link for doc: peroxide/special)
Full Changelog: https://github.com/Axect/Peroxide/compare/v0.37.8...v0.37.9
- Rust
Published by Axect almost 2 years ago
peroxide - v0.37.8
Release 0.37.8 (2024-07-30)
Integrate with lambert_w crate (#63) (Thanks to @JSorngard)
- Write flexible wrapper for lambert_w ```rust pub enum LambertWAccuracyMode { Simple, // Faster, 24 bits of accuracy Precise, // Slower, 50 bits of accuracy }
pub fn lambertw0(z: f64, mode: LambertWAccuracyMode) -> f64; pub fn lambertwm1(z: f64, mode: LambertWAccuracyMode) -> f64;
- Write default Lambert W function for `prelude` (Precise as default)rust use peroxide::prelude::*;fn main() { lambertw0(1.0).print(); // Same as fuga::lambertw0(1.0, LambertWAccuracyMode::Simple) } ```
What's Changed
- Implement the Lambert W function as a wrapper around the
lambert_wcrate. by @JSorngard in https://github.com/Axect/Peroxide/pull/63
New Contributors
- @JSorngard made their first contribution in https://github.com/Axect/Peroxide/pull/63
Full Changelog: https://github.com/Axect/Peroxide/compare/v0.37.7...v0.37.8
- Rust
Published by Axect almost 2 years ago
peroxide - v0.37.6
Release 0.37.6 (2024-06-19)
Huge Spline Change
- Generic Spline trait
Spline<T>: desired output type isT
- Split
PolynomialSplinefromSplineCubicSpline&CubicHermiteSplineare nowPolynomialSpline- Implement
Spline<f64>forPolynomialSpline
- Implement B-Spline
BSpline { degree: usize, knots: Vec<f64>, control_points: Vec<Vec<f64>> }BSpline::open(degree, knots, control_points): Open B-SplineBSpline::clamped(degree, knots, control_points): Clamped B-Spline
- Implement
Spline<(f64, f64)>forBSpline
Full Changelog: https://github.com/Axect/Peroxide/compare/v0.37.5...v0.37.6
- Rust
Published by Axect almost 2 years ago
peroxide - v0.37.3
Release 0.37.3 (2024-05-01)
- Add Nan/infinite guard to
gauss_kronrod_quadrature(early exit) (#59) (Thanks to @GComitini) - Add complex feature & complex module (#35)
- Implement Cubic B-Spline basis functions
UnitCubicBasisCubicBSplineBases
What's Changed
- Add Nan/infinite guard to gausskronrodquadrature (early exit) by @GComitini in https://github.com/Axect/Peroxide/pull/59
Full Changelog: https://github.com/Axect/Peroxide/compare/v0.37.2...v0.37.3
- Rust
Published by Axect about 2 years ago
peroxide - v0.37.2
Release 0.37.2 (2024-04-16)
- Do not include legend box if there is no legend (#58) (Thanks to @GComitini)
- Add
rtolfield toBroydenMethod - Implement high-level macros for root finding
bisection!(f, (a,b), max_iter, tol)newton!(f, x0, max_iter, tol)(require#[ad_function]attribute)secant!(f, (a,b), max_iter, tol)false_position!(f, (a,b), max_iter, tol)
New Contributors
- @GComitini made their first contribution in #58
Full Changelog: https://github.com/Axect/Peroxide/compare/v0.37.1...v0.37.2
- Rust
Published by Axect about 2 years ago
peroxide - v0.37.0
Release 0.37.0 (2024-04-14)
Huge Update - Whole new Root finding & anyhow
Whole new Root finding
- Remove all boilerplates
- Now,
RootFindingis composed of traitsRootFindingProblem<const I: usize, const O: usize, T>: Trait for defining and root finding problemI: Input dimensionO: Output dimensionT: Type of stateRootFinder: Trait for finding rootBisectionMethod: Bisection Method (I=1, O=1, T=(f64, f64))FalsePositionMethod: False Position Method (I=1, O=1, T=(f64, f64))NewtonMethod: Newton Method (I=1, O=1, T=f64)SecantMethod: Secant Method (I=1, O=1, T=(f64, f64))
Error handling with anyhow
- Remove
thiserrordependency - Add
anyhowfor error handling - Change error handling in
ODE,Spline,WeightedUniform
Full Changelog: https://github.com/Axect/Peroxide/compare/v0.36.4...v0.37.0
- Rust
Published by Axect about 2 years ago
peroxide - v0.36.4
Release 0.36.4 (2024-04-11)
- More generic Butcher tableau
- Now, you can use
ButcherTableaufor non-embedded methods too
- Now, you can use
- More ODE integrators
RALS3, RALS4, RK5, BS23
Full Changelog: https://github.com/Axect/Peroxide/compare/v0.36.2...v0.36.4
- Rust
Published by Axect about 2 years ago
peroxide - v0.36.2
Release 0.36.2 (2024-04-10)
- Now, you can report current states if your constraints are violated.
ODEError::ConstraintViolation->ODEError::ConstraintViolation(f64, Vec<f64>, Vec<f64>)- for detailed information, see docs for ODEError
- Add docs for
ODEError
Full Changelog: https://github.com/Axect/Peroxide/compare/v0.36.1...v0.36.2
- Rust
Published by Axect about 2 years ago
peroxide - v0.36.1
Release 0.36.1 (2024-04-09)
- Fix all warnings in peroxide
- Change redundant method
Vec<f64>::resize->Vec<f64>::reshape
- Error handling for concatenation
cbind&rbindnow returnsResult<Matrix, ConcatenateError>
- New non-macro utils
column_stack(&[Vec<f64>]) -> Result<Matrix, ConcatenateError>row_stack(&[Vec<f64>]) -> Result<Matrix, ConcatenateError>rand_with_rng(usize, usize, &mut Rng) -> Matrix
- Generic Butcher tableau trait (now for embedded Runge-Kutta methods)
```rust pub trait ButcherTableau { const C: &'static [f64]; const A: &'static [&'static [f64]]; const BH: &'static [f64]; const BL: &'static [f64];
fn tol(&self) -> f64;
fn safety_factor(&self) -> f64;
fn max_step_size(&self) -> f64;
fn min_step_size(&self) -> f64;
fn max_step_iter(&self) -> usize;
} ```
Implement
ODEIntegratorforButcherTableau- Just declare
ButcherTableauthenstepis free
- Just declare
Three available embedded Runge-Kutta methods
RKF45: Runge-Kutta-Fehlberg 4/5th orderDP45: Dormand-Prince 4/5th orderTSIT45: Tsitouras 4/5th order
Full Changelog: https://github.com/Axect/Peroxide/compare/v0.36.0...v0.36.1
- Rust
Published by Axect about 2 years ago
peroxide - v0.36.0
Release 0.36.0 (2024-04-08)
Huge Update - Error handling & Whole new ODE
Error handling
- Add
thiserrorfor error handling - Implement errors for cubic spline & cubic hermite spline.
- Implement errors for weighted uniform distribution & PRS.
Seedable sampling
- Now, all distribution has
sample_with_rngmethod. - There are two wrappers for
SeedableRngsmallrng_from_seed: Performant but not securestdrng_from_seed: Performant enough and secure enough
Whole new ODE
- Remove all boilerplates.
- Now,
ODEis composed of traits.ODEProblem: Trait for defining and ODE problem.ODEIntegrator: Trait for integrating ODE.RK4: Runge-Kutta 4th orderRKF45: Runge-Kutta-Fehlberg 4/5th orderGL4: Gauss-Legendre 4th order- You can implement your own integrator.
ODESolver: Trait for solving ODE.BasicODESolver: Basic ODE solver - define range of t, initial step size and integrate it.- You can implement your own solver.
- For more information, see docs for ode.
Full Changelog: https://github.com/Axect/Peroxide/compare/v0.35.1...v0.36.0
- Rust
Published by Axect about 2 years ago
peroxide - v0.34.7
More updates for plot feature
- Make legend optional (Now, no legend is available)
- Implement
set_line_style. Here are available line styles.LineStyle::SolidLineStyle::DashedLineStyle::DottedLineStyle::DashDot
- Implement
set_color - Implement
set_alpha - More markers.
Getter for ODE
- Add explicit getter for
ExplicitODEandImplicitODEfor various fields.
Full Changelog: https://github.com/Axect/Peroxide/compare/v0.34.6...v0.34.7
- Rust
Published by Axect about 2 years ago