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 真商不可达,饱和到最大值 |