Skip to content

Commit 6d89227

Browse files
authored
Merge pull request #116 from Axect/release-v0.43.1
Sync v0.43.1 release metadata back to dev
2 parents 0d7ca68 + 9bd7db0 commit 6d89227

4 files changed

Lines changed: 35 additions & 6 deletions

File tree

‎CITATION.cff‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ authors:
3333
family-names: Sen
3434
affiliation: Independent Researcher
3535
orcid: 'https://orcid.org/0009-0008-0337-9964'
36+
- given-names: Russell R P
37+
family-names: Senthamarai
38+
affiliation: Independent Researcher
39+
orcid: 'https://orcid.org/0000-0002-8061-5480'
3640
- given-names: Johanna
3741
family-names: Sörngård
3842
affiliation: Independent Researcher
@@ -65,4 +69,4 @@ keywords:
6569
- Integration
6670
- Linear algebra
6771
- Differential equation
68-
license: MIT OR Apache-2.0
72+
license: MIT

‎Cargo.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "peroxide"
3-
version = "0.43.0"
3+
version = "0.43.1"
44
authors = ["axect <axect@outlook.kr>"]
55
edition = "2018"
66
description = "Rust comprehensive scientific computation library contains linear algebra, numerical analysis, statistics and machine learning tools with familiar syntax"

‎RELEASES.md‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,25 @@
1+
# Release 0.43.1 (2026-08-02)
2+
3+
## Bug fixes
4+
5+
- Improve numerical stability and domain coverage of `gamma_approx` and `ln_gamma_approx` ([#105](https://github.com/Axect/Peroxide/pull/105)) (Thanks to [@jzeuzs](https://github.com/jzeuzs))
6+
- `ln_gamma_approx` now applies Euler's reflection formula for `z < 0.5`, which previously only `gamma_approx` did.
7+
- Poles are handled explicitly: `gamma_approx` returns `NaN` at negative integers and `ln_gamma_approx` returns `+inf` at non-positive integers.
8+
- The positive-integer fast path accumulates in `f64` instead of the integer `factorial` helper, and saturates to `+inf` above `z = 171`.
9+
- Adds 171 lines of tests covering poles, reflection, integer arguments and large-magnitude inputs.
10+
- Make `ln_gamma` exact at small integers and `gamma(-0.0)` negative infinity ([#113](https://github.com/Axect/Peroxide/pull/113))
11+
- Integer arguments up to 23 route through the exact factorial path, so `ln_gamma_approx(1.0)` and `ln_gamma_approx(2.0)` return exactly `0` instead of about `-1e-11`. This matters for callers that subtract two log-gammas of equal argument.
12+
- `gamma_approx(-0.0)` returns `-inf` while `gamma_approx(0.0)` returns `+inf`, matching C99 `tgamma` and SciPy.
13+
14+
## JOSS review (#10366) cycle
15+
16+
### Metadata
17+
- Add Russell R P Senthamarai to `CITATION.cff` and the manuscript author list. The manuscript and `CITATION.cff` now list the same eight named authors in the same order with matching ORCIDs.
18+
- Use a single SPDX identifier for the `CITATION.cff` `license` field. `MIT OR Apache-2.0` is an SPDX expression, which the Citation File Format 1.2.0 schema does not accept. Zenodo validates the file with cffconvert during GitHub release archiving, so the v0.42.0 and v0.43.0 archives failed and never received a DOI. The array form is valid per the CFF spec but Zenodo has rejected it since the InvenioRDM migration ([zenodo/zenodo#2515](https://github.com/zenodo/zenodo/issues/2515)). The crate stays dual-licensed under MIT or Apache-2.0 through `Cargo.toml` and the two `LICENSE-*` files.
19+
20+
### Documentation
21+
- Apply editorial wording fixes to the manuscript ([#114](https://github.com/Axect/Peroxide/pull/114)) (Thanks to [@jbytecode](https://github.com/jbytecode))
22+
123
# Release 0.43.0 (2026-07-11)
224

325
## Breaking changes

‎paper/paper.md‎

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ authors:
2727
- name: Soumya Sen
2828
orcid: 0009-0008-0337-9964
2929
affiliation: 4
30+
- name: Russell R P Senthamarai
31+
orcid: 0000-0002-8061-5480
32+
affiliation: 4
3033
- name: Johanna Sörngård
3134
orcid: 0000-0002-8660-9989
3235
affiliation: 4
@@ -77,11 +80,11 @@ Peroxide fills this integration gap.
7780
| DataFrame I/O | $\checkmark$ | — | — | — | — | — | — | $\checkmark$ |
7881

7982
We do not claim superiority over any specialist crate within its domain.
80-
Peroxide's contribution is the integration itself, enabled by design abstractions: a `ButcherTableau` trait unifies Runge-Kutta methods via compile-time constants, a `Calculus` trait supports exact differentiation and integration of piecewise polynomial splines, const-generic typing constrains root-finding dimensions, and a `Real` trait carries AD-derived derivatives into optimization and root-finding without glue code.
83+
Peroxide's contribution is the integration itself, enabled by design abstractions: a `ButcherTableau` trait unifies Runge-Kutta methods via compile-time constants, a `Calculus` trait supports exact differentiation and integration of piecewise polynomial splines, const generic typing constrains root-finding dimensions, and a `Real` trait carries AD-derived derivatives into optimization and root-finding without glue code.
8184

8285
# State of the field
8386

84-
In automatic differentiation specifically, a review of available Rust AD crates on crates.io indicates that, to our knowledge, Peroxide is the only library combining const-generic derivative order, normalized Taylor coefficient storage, and true Taylor-mode propagation with $O(N^2)$ cost per elementary operation.
87+
In automatic differentiation specifically, a review of available Rust AD crates on crates.io indicates that, to our knowledge, Peroxide is the only library combining const generic derivative order, normalized Taylor coefficient storage, and true Taylor-mode propagation with $O(N^2)$ cost per elementary operation.
8588
Most alternatives provide dual numbers up to second or third order with fixed type hierarchies [@numdual] or nested generics with exponential cost at higher orders [@autodiff_elrnv].
8689
The ad-trait crate [@adtrait] offers both forward and reverse modes but is limited to first-order derivatives.
8790
Enzyme [@enzyme] performs AD as an LLVM compiler pass and supports both forward and reverse modes.
@@ -95,11 +98,11 @@ Peroxide's `ButcherTableau` trait-based architecture is a complementary approach
9598
**Architecture.**
9699
We store matrices as a flat `Vec<f64>` with a `Shape` enum (`Row`/`Col`) that controls logical layout without copying data.
97100
This design trades the rich type-level dimensionality of nalgebra for a memory model that maps directly to both the pure-Rust `matrixmultiply` crate [@matrixmultiply] and, when the `O3` feature flag is enabled, to OpenBLAS [@openblas], passing raw pointers with stride and transpose flags without intermediate type conversions.
98-
The trade-offs are that matrix dimensions are not enforced at compile time (unlike nalgebra's typed `Matrix<f64, R, C>`) and the layout does not extend to N-dimensional tensors as `ndarray` [@ndarray] does.
101+
The trade-offs are that matrix dimensions are not enforced at compile time (unlike nalgebra's typed `Matrix<f64, R, C>`), and the layout does not extend to N-dimensional tensors as `ndarray` [@ndarray] does.
99102
A `Real` trait abstracts over `f64` and `AD` (= `Jet<2>`), so the same function can compute both values and derivatives.
100103

101104
**Automatic differentiation.**
102-
The const-generic type `Jet<N>` stores the function value $c_0 = f(a)$ and $N$ normalized Taylor coefficients $c_k = f^{(k)}(a)/k!$ [@griewank2008].
105+
The const generic type `Jet<N>` stores the function value $c_0 = f(a)$ and $N$ normalized Taylor coefficients $c_k = f^{(k)}(a)/k!$ [@griewank2008].
103106
Multiplication follows the Cauchy product of truncated power series:
104107

105108
$$c_n(f \cdot g) = \sum_{i=0}^{n} c_i(f)\, c_{n-i}(g)$$

0 commit comments

Comments
 (0)