#gamma #normal-distribution #bessel #elliptic #special #cephes

spec_math

Rust implementations of special mathematical functions. Includes re-implementation of the CEPHES math library for gamma functions, error functions, elliptic integrals, sine and cosine integrals, fresnel integrals, normal distribution, and bessel functions

7 releases

new 0.1.6 Oct 5, 2024
0.1.5 Dec 30, 2023

#322 in Algorithms

Download history 15/week @ 2024-06-20 22/week @ 2024-06-27 399/week @ 2024-09-05 83/week @ 2024-09-12 6/week @ 2024-09-19 37/week @ 2024-09-26 247/week @ 2024-10-03

624 downloads per month
Used in starfinder

MIT/Apache

600KB
10K SLoC

spec_math

This crate contains approximations for a set of mathematical functions commonly referred to as "special functions". The goal of this crate is to eventually contain a full Rust re-implementation of the CEPHES library with minimal changes in modules such as the cephes64 module. The special functions will also be available as traits for easier use in Rust, potentially with modifications to correct bugs or improve performance from the original CEPHES implementation.

Currently, the gamma functions, error functions, elliptic integrals, sine and cosine integrals, fresnel integrals, normal distribution, and bessel functions are implemented.


lib.rs:

This crate contains approximations for a set of mathematical functions commonly referred to as "special functions". The goal of this crate is to eventually contain a full Rust re-implementation of the CEPHES library with minimal changes in modules such as the cephes64 module. The special functions will also be available as traits for easier use in Rust, potentially with modifications to correct bugs or improve performance from the original CEPHES implementation.

Currently, the error functions, gamma functions, beta functions, fresnel integrals, sine and cosine integrals, elliptic integrals, and bessel functions are implemented. Uses cephes64::erf Uses cephes64::erfc Uses misc::erfinv Uses misc::erfcinv Uses cephes64::fresnl Uses cephes64::sici Uses cephes64::shichi Uses cephes64::expn Uses cephes64::dawsn Uses cephes64::spence Uses misc::norm_pdf Uses cephes64::ndtr Uses cephes64::ndtri Uses misc::t_pdf Uses cephes64::stdtr Uses cephes64::stdtri Uses misc::binom_pmf Uses cephes64::bdtr Uses cephes64::bdtrc Uses cephes64::bdtri Uses misc::nbinom_pmf Uses cephes64::nbdtr Uses cephes64::nbdtrc Uses cephes64::nbdtri Uses cephes64::gamma Uses cephes64::lgam Uses cephes64::igam Uses cephes64::igamc Uses cephes64::igami Uses cephes64::igamci Uses cephes64::psi Uses cephes64::rgamma Uses cephes64::beta Uses cephes64::lbeta Uses cephes64::incbet Uses cephes64::incbi Uses misc::beta_pdf Uses cephes64::btdtr Uses cephes64::incbi Uses misc::chi2_pdf Uses cephes64::chdtr Uses cephes64::chdtrc Uses cephes64::chdtri Uses misc::pois_pmf Uses cephes64::pdtr Uses cephes64::pdtrc Uses cephes64::pdtri Uses misc::f_pdf Uses cephes64::fdtr Uses cephes64::fdtrc Uses cephes64::fdtri Uses misc::gamma_pdf Uses cephes64::gdtr Uses cephes64::gdtrc Uses cephes64::gdtri Uses cephes64::reimann_zeta Uses cephes64::zetac Uses cephes64::zeta Uses cephes64::ellpj Uses cephes64::ellpe Uses cephes64::ellpk evaluated at 1.0 - self Uses cephes64::ellie Uses cephes64::ellik Uses cephes64::airy Uses cephes64::j0 Uses cephes64::y0 Uses cephes64::i0 Uses cephes64::i0e Uses cephes64::j1 Uses cephes64::y1 Uses cephes64::i1 Uses cephes64::i1e Uses cephes64::k0 Uses cephes64::k0e Uses cephes64::k1 Uses cephes64::k1e Uses cephes64::yn Uses cephes64::kn Uses cephes64::jv Uses cephes64::yv Uses misc::besselpoly

No runtime deps