Recent Releases of peroxide

peroxide - v0.40.0

Release 0.40.0 (2025-07-24)

Move from arrow2 to arrow & parquet

  • Remove arrow2 dependency
  • Add arrow and parquet dependencies
  • Update WithParquet implementation
  • On user side, there are almost no changes in DataFrame API, but there is one change for fuga user:
    • CompressionOptions -> UNCOMPRESSED, SNAPPY, GZIP(level), LZ4, ZSTD(level), BROTLI(level), LZO, LZ4_RAW
    • For prelude user, there are completely no changes. Default compression is SNAPPY.

Release 0.39.11 (2025-07-22)

  • Implement derivative and integral of 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 BU coefficient vector for the 7th order solution in the RKF78 implementation.

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.8

Release 0.39.8 (2025-06-23)

  • Implement LogNormal distribution
    • LogNormal(mu: f64, sigma: f64)
  • Fix sampling method for Gamma

Full Changelog: https://github.com/Axect/Peroxide/compare/v0.39.7...v0.39.8

- Rust
Published by Axect 11 months ago

peroxide - v0.39.7

Release 0.39.7 (2025-05-27)

  • Add some methods for DataFrame
    • filter_by<F: Fn(Scalar) -> bool>(&self, column: &str, f: F) -> anyhow::Result<DataFrame> : Filter rows by a condition on a specific column
    • mask(&self, mask: &Series) -> anyhow::Result<DataFrame> : Filter rows by a boolean mask
    • select_rows(&self, indices: &[usize]) -> DataFrame : Select specific rows by indices

Release 0.39.6 (2025-05-16)

  • New ODESolver: RKF78
    • Implement RKF78 method for ODESolver

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.5

Release 0.39.5 (2025-04-21)

  • New feature rkyv
    • Implement rkyv::{Archive, Serialize, Deserialize} for Matrix, Polynomial, Spline, ODE

Full Changelog: https://github.com/Axect/Peroxide/compare/v0.39.4...v0.39.5

- 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_table and kronrod_table to &'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 integrate by 1.2x - 50x (to integrate highly oscillatory functions)

Update dependencies

  • Update rand to 0.9
  • Update rand_distr to 0.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.3

Release 0.39.3 (2025-03-13)

  • Update puruspe to 0.4.0

Full Changelog: https://github.com/Axect/Peroxide/compare/v0.39.2...v0.39.3

- Rust
Published by Axect about 1 year ago

peroxide - v0.39.2

Release 0.39.2 (2025-02-06)

  • Implement Broyden method for GL4

Full Changelog: https://github.com/Axect/Peroxide/compare/v0.39.1...v0.39.2

- Rust
Published by Axect over 1 year ago

peroxide - v0.39.1

Release 0.39.1 (2025-02-06)

  • Add lambert_w doc 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 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_w crate 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 puruspe dependency, remove lambert_w dependency 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)

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_w crate. 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 is T
  • Split PolynomialSpline from Spline
    • CubicSpline & CubicHermiteSpline are now PolynomialSpline
    • Implement Spline<f64> for PolynomialSpline
  • Implement B-Spline
    • BSpline { degree: usize, knots: Vec<f64>, control_points: Vec<Vec<f64>> }
    • BSpline::open(degree, knots, control_points) : Open B-Spline
    • BSpline::clamped(degree, knots, control_points) : Clamped B-Spline
  • Implement Spline<(f64, f64)> for BSpline

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.5

Release 0.37.5

  • More generic & stable root finding macros

Full Changelog: https://github.com/Axect/Peroxide/compare/v0.37.4...v0.37.5

- Rust
Published by Axect almost 2 years ago

peroxide - v0.37.4

Release 0.37.4 (2024-05-17)

  • Public ODE Integrator fields

Full Changelog: https://github.com/Axect/Peroxide/compare/v0.37.3...v0.37.4

- Rust
Published by Axect about 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
    • UnitCubicBasis
    • CubicBSplineBases

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 rtol field to BroydenMethod
  • 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.1

Release 0.37.1 (2024-04-15)

  • Implement BrodenMethod: Broyden's method (I>=1, O>=1, T=([f64; I], [f64; I]))
  • Restore citation file

Full Changelog: https://github.com/Axect/Peroxide/compare/v0.37.0...v0.37.1

- 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, RootFinding is composed of traits
    • RootFindingProblem<const I: usize, const O: usize, T>: Trait for defining and root finding problem
    • I: Input dimension
    • O: Output dimension
    • T: Type of state
    • RootFinder: Trait for finding root
    • BisectionMethod: 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 thiserror dependency
  • Add anyhow for 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 ButcherTableau for non-embedded methods too
  • 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 & rbind now returns Result<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 ODEIntegrator for ButcherTableau

    • Just declare ButcherTableau then step is free
  • Three available embedded Runge-Kutta methods

    • RKF45: Runge-Kutta-Fehlberg 4/5th order
    • DP45: Dormand-Prince 4/5th order
    • TSIT45: 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 thiserror for 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_rng method.
  • There are two wrappers for SeedableRng
    • smallrng_from_seed : Performant but not secure
    • stdrng_from_seed : Performant enough and secure enough

Whole new ODE

  • Remove all boilerplates.
  • Now, ODE is composed of traits.
    • ODEProblem: Trait for defining and ODE problem.
    • ODEIntegrator: Trait for integrating ODE.
    • RK4: Runge-Kutta 4th order
    • RKF45: Runge-Kutta-Fehlberg 4/5th order
    • GL4: 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.35.1

Full Changelog: https://github.com/Axect/Peroxide/compare/v0.34.7...v0.35.1

Releases info

- 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::Solid
    • LineStyle::Dashed
    • LineStyle::Dotted
    • LineStyle::DashDot
  • Implement set_color
  • Implement set_alpha
  • More markers.

Getter for ODE

  • Add explicit getter for ExplicitODE and ImplicitODE for various fields.

Full Changelog: https://github.com/Axect/Peroxide/compare/v0.34.6...v0.34.7

- Rust
Published by Axect about 2 years ago