Skip to content

Math

Module: std.math
Source: std/math.zn

PI

Pi circle constant


pub const PI: f64

TAU

Full circle constant (2 * PI)


pub const TAU: f64

E

Euler number


pub const E: f64

min

Smaller of two values


pub fn min[T: Ord](a: T, b: T) T

max

Greater of two values


pub fn max[T: Ord](a: T, b: T) T

clamp

Clamp value into [lo, hi]


pub fn clamp[T: Ord](value: T, lo: T, hi: T) T

lerp

Linear interpolation between a and b


pub fn lerp(a: f64, b: f64, t: f64) f64

lerpf

Linear interpolation between a and b (single precision)


pub fn lerpf(a: f32, b: f32, t: f32) f32

gcd

Greatest common divisor (always non-negative)


pub fn gcd(a: i64, b: i64) i64

lcm

Least common multiple (zero if either side is zero)


pub fn lcm(a: i64, b: i64) i64

is_nan

true for NaN values


pub fn is_nan(value: f64) bool

is_nanf

true for NaN values (single precision)


pub fn is_nanf(value: f32) bool

is_inf

true for infinite values


pub fn is_inf(value: f64) bool

is_inff

true for infinite values (single precision)


pub fn is_inff(value: f32) bool

fabs / fabsf

pub extern fn fabs(x: f64) f64
pub extern fn fabsf(x: f32) f32

fmod / fmodf

pub extern fn fmod(x: f64, y: f64) f64
pub extern fn fmodf(x: f32, y: f32) f32

remainder / remainderf

pub extern fn remainder(x: f64, y: f64) f64
pub extern fn remainderf(x: f32, y: f32) f32

exp / expf

pub extern fn exp(x: f64) f64
pub extern fn expf(x: f32) f32

exp2 / exp2f

pub extern fn exp2(x: f64) f64
pub extern fn exp2f(x: f32) f32

expm1 / expm1f

pub extern fn expm1(x: f64) f64
pub extern fn expm1f(x: f32) f32

log / logf

pub extern fn log(x: f64) f64
pub extern fn logf(x: f32) f32

log10 / log10f

pub extern fn log10(x: f64) f64
pub extern fn log10f(x: f32) f32

log2 / log2f

pub extern fn log2(x: f64) f64
pub extern fn log2f(x: f32) f32

log1p / log1pf

pub extern fn log1p(x: f64) f64
pub extern fn log1pf(x: f32) f32

pow / powf

pub extern fn pow(x: f64, y: f64) f64
pub extern fn powf(x: f32, y: f32) f32

sqrt / sqrtf

pub extern fn sqrt(x: f64) f64
pub extern fn sqrtf(x: f32) f32

cbrt / cbrtf

pub extern fn cbrt(x: f64) f64
pub extern fn cbrtf(x: f32) f32

hypot / hypotf

pub extern fn hypot(x: f64, y: f64) f64
pub extern fn hypotf(x: f32, y: f32) f32

sin / sinf

pub extern fn sin(x: f64) f64
pub extern fn sinf(x: f32) f32

cos / cosf

pub extern fn cos(x: f64) f64
pub extern fn cosf(x: f32) f32

tan / tanf

pub extern fn tan(x: f64) f64
pub extern fn tanf(x: f32) f32

asin / asinf

pub extern fn asin(x: f64) f64
pub extern fn asinf(x: f32) f32

acos / acosf

pub extern fn acos(x: f64) f64
pub extern fn acosf(x: f32) f32

atan / atanf

pub extern fn atan(x: f64) f64
pub extern fn atanf(x: f32) f32

atan2 / atan2f

pub extern fn atan2(y: f64, x: f64) f64
pub extern fn atan2f(y: f32, x: f32) f32

sinh / sinhf

pub extern fn sinh(x: f64) f64
pub extern fn sinhf(x: f32) f32

cosh / coshf

pub extern fn cosh(x: f64) f64
pub extern fn coshf(x: f32) f32

tanh / tanhf

pub extern fn tanh(x: f64) f64
pub extern fn tanhf(x: f32) f32

asinh / asinhf

pub extern fn asinh(x: f64) f64
pub extern fn asinhf(x: f32) f32

acosh / acoshf

pub extern fn acosh(x: f64) f64
pub extern fn acoshf(x: f32) f32

atanh / atanhf

pub extern fn atanh(x: f64) f64
pub extern fn atanhf(x: f32) f32

erf / erff

pub extern fn erf(x: f64) f64
pub extern fn erff(x: f32) f32

erfc / erfcf

pub extern fn erfc(x: f64) f64
pub extern fn erfcf(x: f32) f32

tgamma / tgammaf

pub extern fn tgamma(x: f64) f64
pub extern fn tgammaf(x: f32) f32

lgamma / lgammaf

pub extern fn lgamma(x: f64) f64
pub extern fn lgammaf(x: f32) f32

ceil / ceilf

pub extern fn ceil(x: f64) f64
pub extern fn ceilf(x: f32) f32

floor / floorf

pub extern fn floor(x: f64) f64
pub extern fn floorf(x: f32) f32

round / roundf

pub extern fn round(x: f64) f64
pub extern fn roundf(x: f32) f32

trunc / truncf

pub extern fn trunc(x: f64) f64
pub extern fn truncf(x: f32) f32

lround / lroundf

pub extern fn lround(x: f64) c_long
pub extern fn lroundf(x: f32) c_long

llround / llroundf

pub extern fn llround(x: f64) c_longlong
pub extern fn llroundf(x: f32) c_longlong

lrint / lrintf

pub extern fn lrint(x: f64) c_long
pub extern fn lrintf(x: f32) c_long

llrint / llrintf

pub extern fn llrint(x: f64) c_longlong
pub extern fn llrintf(x: f32) c_longlong

ldexp / ldexpf

pub extern fn ldexp(x: f64, exp: c_int) f64
pub extern fn ldexpf(x: f32, exp: c_int) f32

frexp / frexpf

pub extern fn frexp(x: f64, exp: *c_int) f64
pub extern fn frexpf(x: f32, exp: *c_int) f32

modf / modff

pub extern fn modf(x: f64, iptr: *f64) f64
pub extern fn modff(x: f32, iptr: *f32) f32

scalbn / scalbnf

pub extern fn scalbn(x: f64, n: c_int) f64
pub extern fn scalbnf(x: f32, n: c_int) f32

scalbln / scalblnf

pub extern fn scalbln(x: f64, n: c_long) f64
pub extern fn scalblnf(x: f32, n: c_long) f32

copysign / copysignf

pub extern fn copysign(x: f64, y: f64) f64
pub extern fn copysignf(x: f32, y: f32) f32

isnan / isnanf

pub extern fn isnan(x: f64) c_int
pub extern fn isnanf(x: f32) c_int

isinf / isinff

pub extern fn isinf(x: f64) c_int
pub extern fn isinff(x: f32) c_int

isfinite / isfinitef

pub extern fn isfinite(x: f64) c_int
pub extern fn isfinitef(x: f32) c_int

isgreater / isgreaterequal / isless / islessequal / islessgreater / isunordered

pub extern fn isgreater(x: f64, y: f64) c_int
pub extern fn isgreaterequal(x: f64, y: f64) c_int
pub extern fn isless(x: f64, y: f64) c_int
pub extern fn islessequal(x: f64, y: f64) c_int
pub extern fn islessgreater(x: f64, y: f64) c_int
pub extern fn isunordered(x: f64, y: f64) c_int

nextafter / nextafterf

pub extern fn nextafter(x: f64, y: f64) f64
pub extern fn nextafterf(x: f32, y: f32) f32

nexttoward / nexttowardf

pub extern fn nexttoward(x: f64, y: f64) f64
pub extern fn nexttowardf(x: f32, y: f64) f32

fma / fmaf

pub extern fn fma(x: f64, y: f64, z: f64) f64
pub extern fn fmaf(x: f32, y: f32, z: f32) f32