0 ULP (bit-exact) compatibility with CPython's math and cmath modules.
Every function produces identical results to Python at the binary representation level - not just "close enough", but exactly the same bits.
pymath is a strict port of CPython's math library to Rust. Each function has been carefully translated from CPython's C implementation, preserving the same algorithms, constants, and corner case handling.
-
ceil -
copysign -
fabs -
floor -
fmod -
frexp -
isclose -
isfinite -
isinf -
isnan -
ldexp -
modf -
nextafter -
remainder -
trunc -
ulp -
cbrt -
exp -
exp2 -
expm1 -
log -
log10 -
log1p -
log2 -
pow -
sqrt -
acos -
acosh -
asin -
asinh -
atan -
atan2 -
atanh -
cos -
cosh -
sin -
sinh -
tan -
tanh -
erf -
erfc -
gamma -
lgamma -
dist -
fsum -
hypot -
prod -
sumprod -
degrees -
radians -
pi -
e -
tau -
inf -
nan
-
comb -
factorial -
gcd -
isqrt -
lcm -
perm
-
abs -
isclose -
isfinite -
isinf -
isnan -
phase -
polar -
rect -
exp -
log -
log10 -
sqrt -
acos -
acosh -
asin -
asinh -
atan -
atanh -
cos -
cosh -
sin -
sinh -
tan -
tanh
use pymath::math::{sqrt, gamma, lgamma};
fn main() {
let sqrt_result = sqrt(2.0).unwrap();
let gamma_result = gamma(4.5).unwrap();
let lgamma_result = lgamma(4.5).unwrap();
}# Python 3.14
>>> import math
>>> math.gamma(0.5).hex()
'0x1.c5bf891b4ef6ap+0'// Rust - identical bits
assert_eq!(
pymath::math::gamma(0.5).unwrap().to_bits(),
0x3ffc5bf891b4ef6a
);Bit representation may vary across platforms, but CPython and pymath built on the same environment will always produce identical results.
complex(default) - Enable cmath module for complex number functionsnum-bigint- Enable integer functions using num-bigintmalachite-bigint- Enable integer functions using malachite-bigintmul_add- Use hardware FMA for bit-exact macOS compatibility
pymath::math- Real number math functions (Python'smathmodule)pymath::cmath- Complex number functions (Python'scmathmodule)pymath::m- Direct libm bindings