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.
-
acos -
acosh -
asin -
asinh -
atan -
atan2 -
atanh -
cbrt -
ceil -
copysign -
cos -
cosh -
degrees -
dist -
e -
erf -
erfc -
exp -
exp2 -
expm1 -
fabs -
floor -
fma -
fmod -
frexp -
fsum -
gamma -
hypot(n-dimensional) -
inf -
isclose -
isfinite -
isinf -
isnan -
ldexp -
lgamma -
log -
log10 -
log1p -
log2 -
modf -
nan -
nextafter -
pi -
pow -
prod(prod,prod_int) -
radians -
remainder -
sin -
sinh -
sqrt -
sumprod(sumprod,sumprod_int) -
tan -
tanh -
tau -
trunc -
ulp
-
comb -
factorial -
gcd -
isqrt -
lcm -
perm
-
abs -
acos -
acosh -
asin -
asinh -
atan -
atanh -
cos -
cosh -
e -
exp -
inf -
infj -
isclose -
isfinite -
isinf -
isnan -
log -
log10 -
nan -
nanj -
phase -
pi -
polar -
rect -
sin -
sinh -
sqrt -
tan -
tanh -
tau
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