numra_special/lib.rs
1// Clippy: reference values and numerical loops in tests / implementations.
2#![allow(clippy::excessive_precision)]
3#![allow(clippy::unnecessary_cast)]
4
5//! Special mathematical functions for Numra.
6//!
7//! This crate provides implementations of special functions commonly needed in
8//! scientific computing, physics, and engineering.
9//!
10//! # Function families
11//!
12//! - **Gamma**: gamma, lgamma, digamma, beta, incomplete gamma/beta
13//! - **Error functions**: erf, erfc, erfinv, erfcinv
14//! - **Bessel**: J, Y, I, K for real order
15//! - **Elliptic integrals**: complete K(m), E(m), incomplete F(phi,m)
16//! - **Airy**: Ai(x), Bi(x)
17//! - **Hypergeometric**: 1F1, 2F1
18//! - **Orthogonal polynomials**: Legendre, Hermite, Laguerre, Chebyshev
19//! - **Zeta**: Riemann zeta, Hurwitz zeta
20//! - **Misc**: Dawson, Fresnel, Mittag-Leffler
21//!
22//! Author: Moussa Leblouba
23//! Date: 9 February 2026
24//! Modified: 2 May 2026
25
26pub mod airy;
27pub mod bessel;
28pub mod elliptic;
29pub mod erf;
30pub mod error;
31pub mod gamma;
32pub mod hypergeometric;
33pub mod misc;
34pub mod orthogonal;
35pub mod zeta;
36
37pub use error::SpecialError;
38
39// Gamma family
40pub use gamma::{beta, betainc, digamma, gamma, gammainc, gammaincc, lgamma};
41
42// Error functions
43pub use erf::{erf, erfc, erfcinv, erfinv};
44
45// Bessel functions
46pub use bessel::{besseli, besselj, besselk, bessely};
47
48// Elliptic integrals
49pub use elliptic::{ellipe, ellipf, ellipk};
50
51// Airy functions
52pub use airy::{airy_ai, airy_bi};
53
54// Hypergeometric functions
55pub use hypergeometric::{hyp1f1, hyp2f1};
56
57// Orthogonal polynomials
58pub use orthogonal::{chebyshev_t, hermite_h, laguerre_l, legendre_p, legendre_plm};
59
60// Zeta functions
61pub use zeta::{hurwitz_zeta, zeta};
62
63// Miscellaneous
64pub use misc::{dawson, fresnel_c, fresnel_s, mittag_leffler, mittag_leffler_1};