Skip to content

std.math

tier: core · since: std-0.3 stability: experimental

数学助手(整数域;F64 面随 C2 解除后升版) 口径:整数域纯函数,无浮点依赖;PI/E 等 F64 常量随 C2 解除(P2); ceil_div/isqrt 挂起(C17 宿主 OOM,算法正确,待宿主修复复位)

pub fn

Signature Returns Description
clamp(v: I32, lo: I32, hi: I32) I32 v ∈ [lo, hi];域外钳位
is_pow2(v: I32) Bool v 是否 2 的幂(v > 0)
high_bit(v: I32) I32 v > 0 时最高置位下标(0-based;v ≤ 0 返回 0)
next_pow2(v: I32) I32 v > 0 的最小 2 的幂 ≥ v(v ≤ 0 返回 1)
iabs(v: I32) I32 绝对值(I32;不触 C10 死区)
iabs64(v: I64) I64 I64 绝对值(宽域安全)
max(a: I32, b: I32) I32 两数较大值
min(a: I32, b: I32) I32 两数较小值
max64(a: I64, b: I64) I64 两数较大值(I64)
min64(a: I64, b: I64) I64 两数较小值(I64)
clamp64(v: I64, lo: I64, hi: I64) I64 钳位(I64);v ∈ [lo, hi],域外取端点
sat_add(a: I32, b: I32) I32 饱和加法:越上界得 I32 最大值,越下界得 I32 最小值,不触 C10 溢出死区
sat_sub(a: I32, b: I32) I32 饱和减法:越上界得 I32 最大值,越下界得 I32 最小值,不触 C10 溢出死区
sat_mul(a: I32, b: I32) I32 饱和乘法:越上界得 I32 最大值,越下界得 I32 最小值,不触 C10 溢出死区;
四象限界门判定的除法恒安全(除数非零,不出现最小值除以负一)
sat_add64(a: I64, b: I64) I64 饱和加法(I64):越上界得 I64 最大值,越下界得 I64 最小值,不触 C10 溢出死区
sat_sub64(a: I64, b: I64) I64 饱和减法(I64):越上界得 I64 最大值,越下界得 I64 最小值,不触 C10 溢出死区
sat_mul64(a: I64, b: I64) I64 饱和乘法(I64):越上界得 I64 最大值,越下界得 I64 最小值,不触 C10 溢出死区;
四象限界门判定的除法恒安全(除数非零,不出现最小值除以负一)
sat_abs(v: I32) I32 饱和绝对值:最小值的绝对值越域,饱和到最大值(iabs 同位形则触 C10 死区)
sat_abs64(v: I64) I64 饱和绝对值(I64)
abs_diff(a: I32, b: I32) I32 饱和差:|a-b| 域内安全,不落先减后取绝的减法溢出陷阱;全域差饱和到最大值
abs_diff64(a: I64, b: I64) I64 饱和差(I64)
div_ceil(a: I32, b: I32) I32 整除向上取整:向正无穷;除零交运行时;MIN 除以 -1 真商不可达,饱和到最大值
div_floor(a: I32, b: I32) I32 整除向下取整:向负无穷;除零交运行时;MIN 除以 -1 真商不可达,饱和到最大值