# Ver 0.4.4 (2026-03-17)

- Update dependencies ([#48](https://github.com/Axect/puruspe/pull/48))
  - Thanks to [**JSorngard**](https://github.com/JSorngard)
- Export `erfcx` from public API
- Add max iteration guard to `gser`/`gcf` to prevent potential infinite loops
- Add input validation to `beta()`
- Clarify misleading comment in faddeeva.rs

# Ver 0.4.3 (2025-11-12)

- Implement the Gamma function by Toshio Fukushima with very low relative error
  - Replace the previous Lanczos + reflection formula based implementation with Fukushima's polynomial approximation algorithm
  - Reduce relative error from ~1e-10 to ~1e-14 (often within a single ULP)
  - Add comprehensive special case handling following the ISO C 99 standard (NaN, ±∞, ±0, negative integers)
  - Add `polynomial` (Horner's method) and `mul_add` utility functions with optional FMA support
  - Contributors: [**JSorngard**](https://github.com/JSorngard)
  - Related PR: [#47](https://github.com/Axect/puruspe/pull/47)

# Ver 0.4.2 (2025-10-15)

- Improve numerical stability in `gammp` and `gammq`
  - Add overflow/underflow guards in series and continued fraction methods
  - Implement log-sum-exp trick in quadrature approximation
  - Add edge case handling and result clamping to [0,1]
  - Fix NaN issue when x << a for large a (a >= 100) by using series expansion instead of quadrature
    - For large a with x < 0.2*a, now uses more stable series method
    - Resolves edge case failures in test suite (e.g., gammp(120, 0.1))

# Ver 0.4.1 (2025-04-25)

- Add all branches of the complex Lambert W function
  - Contributors: [**JSorngard**](https://github.com/JSorngard)
  - Related issue: [#40](https://github.com/Axect/puruspe/issues/40)
  - Related PR: [#45](https://github.com/Axect/puruspe/pull/45)
- Enhance CI / Fix proptest & lint
  - Contributors: [**JSorngard**](https://github.com/JSorngard)
  - Related issue: [#42](https://github.com/Axect/puruspe/issues/42)
  - Related PRs:
    - [#41](https://github.com/Axect/puruspe/pull/41)
    - [#43](https://github.com/Axect/puruspe/pull/43)
    - [#44](https://github.com/Axect/puruspe/pull/44)

# Ver 0.4.0 (2025-02-24)

## Implement Faddeeva function

- Contributors: [**ethanbarry**](https://github.com/ethanbarry), [inkydragon](https://github.com/inkydragon), [Axect](https://github.com/Axect), [JSorngard](https://github.com/JSorngard)
- Related PRs
  - [#30](https://github.com/Axect/puruspe/pull/30)
- Newly added dependencies
  - [num-complex](https://crates.io/crates/num-complex)

## Fix bugs

- [#32](https://github.com/Axect/puruspe/issues/32) : Fix swapped doc for `inverf` and `inverfc` (Thanks to [ethanbarry](https://github.com/ethanbarry))
- [#36](https://github.com/Axect/puruspe/issues/36) : Fix `gamma` function for `1f64` (Thanks to [arihant2math](https://github.com/arihant2math))

# Ver 0.3.0 (2024-10-17)

## Implement comprehensive Tests & Integrate `lambert_w`

- Contributors: [JSorngard](https://github.com/JSorngard), [Axect](https://github.com/Axect), [ethanbarry](https://github.com/ethanbarry)
- Related issue: [#12](https://github.com/Axect/puruspe/issues/12)
- Related PRs
  - [#10](https://github.com/Axect/puruspe/pull/10)
  - [#13](https://github.com/Axect/puruspe/pull/13)
  - [#15](https://github.com/Axect/puruspe/pull/15)
  - [#16](https://github.com/Axect/puruspe/pull/16)
  - [#17](https://github.com/Axect/puruspe/pull/17)
  - [#18](https://github.com/Axect/puruspe/pull/18)
  - [#19](https://github.com/Axect/puruspe/pull/19)
  - [#21](https://github.com/Axect/puruspe/pull/21)
  - [#22](https://github.com/Axect/puruspe/pull/22)
  - [#23](https://github.com/Axect/puruspe/pull/23)
  - [#24](https://github.com/Axect/puruspe/pull/24)
  - [#25](https://github.com/Axect/puruspe/pull/25)
  - [#26](https://github.com/Axect/puruspe/pull/26)
- Newly added dependencies
  - [lambert_w](https://crates.io/crates/lambert_w)

# Ver 0.2.5 (2024-08-03)

* Implement Dawson's integral ([#9](https://github.com/Axect/puruspe/pull/9)) (Thanks to [ethanbarry](https://github.com/ethanbarry))
  * `dawson(x: f64) -> f64`: Dawson's integral

# Ver 0.2.4 (2024-04-04)

* Implement Bessel & Modified Bessel functions
  * Integer order
    * `Jn(n: usize, x: f64) -> f64`: Bessel function of the first kind
    * `Yn(n: usize, x: f64) -> f64`: Bessel function of the second kind
    * `In(n: usize, x: f64) -> f64`: Modified Bessel function of the first kind
    * `Kn(n: usize, x: f64) -> f64`: Modified Bessel function of the second kind
  * Fractional order
    * `besseljy(nu: f64, x: f64) -> (f64, f64, f64, f64)`: Bessel functions (include derivatives)
    * `besselik(nu: f64, x: f64) -> (f64, f64, f64, f64)`: Modified Bessel functions (include derivatives)
    * `Jnu_Ynu(nu: f64, x: f64) -> (f64, f64)`: Bessel functions
    * `Inu_Knu(nu: f64, x: f64) -> (f64, f64)`: Modified Bessel functions

# Ver 0.2.3 (2024-02-18)

* Add `docs.rs` badge to README.md
* Add latex support to `gammp` and `gammq` in docs

# Ver 0.2.1 (2024-02-17)

* Update README.md
  * Fix typo (`gammap` -> `gammp`, `gammaq` -> `gammq`)

# Ver 0.2.0 (2022-05-02)

* Fix bugs (https://github.com/Axect/puruspe/issues/4)

# Ver 0.1.5 (2021-01-24)

* LICENSE Update : BSD-3-Clause -> MIT or Apache-2.0

# Ver 0.1.4 (2020-08-06)

* Make public `ln_gamma`. (Thanks to [rw](https://github.com/rw))
