math

std.math

fun min

pub fun min(a: i64, b: i64) i64;

返回两个有符号整数中较小的一个

a:第一个值 b:第二个值 返回值:ab 中较小者

fun max

pub fun max(a: i64, b: i64) i64;

返回两个有符号整数中较大的一个

a:第一个值 b:第二个值 返回值:ab 中较大者

fun clamp

pub fun clamp(v: i64, lo: i64, hi: i64) i64;

将有符号整数限制在范围 [lo, hi]

v:要限制的值 lo:下界 hi:上界 返回值:被限制在 [lo, hi] 内的 v

fun abs

pub fun abs(v: i64) i64;

返回有符号整数的绝对值

当输入为 I64_MIN 时在 I64_MAX 处饱和。

v:值 返回值:v 的绝对值

fun umin

pub fun umin(a: u64, b: u64) u64;

返回两个无符号整数中较小的一个

a:第一个值 b:第二个值 返回值:ab 中较小者

fun umax

pub fun umax(a: u64, b: u64) u64;

返回两个无符号整数中较大的一个

a:第一个值 b:第二个值 返回值:ab 中较大者

fun uclamp

pub fun uclamp(v: u64, lo: u64, hi: u64) u64;

将无符号整数限制在范围 [lo, hi]

v:要限制的值 lo:下界 hi:上界 返回值:被限制在 [lo, hi] 内的 v

fun is_pow2

pub fun is_pow2(v: u64) bool;

检查一个值是否为 2 的幂

v:要检查的值 返回值:如果 v 是非零的 2 的幂,则为 true

fun next_pow2

pub fun next_pow2(v: u64) u64;

向上取整到下一个 2 的幂

如果 v 已经是 2 的幂则返回 v,如果 v 为 0 则返回 1。

v:要向上取整的值 返回值:下一个 >= v 的 2 的幂

fun log2

pub fun log2(v: u64) u64;

计算以 2 为底的对数的向下取整(floor)

v == 0(未定义)时返回 0。

v:值 返回值:floor(log2(v))

fun ceil_div

pub fun ceil_div(a: u64, b: u64) u64;

两个无符号整数的向上取整除法(ceiling division)

a:被除数 b:除数(不能为 0) 返回值:ceil(a / b)

fun sat_add

pub fun sat_add(a: i64, b: i64) i64;

饱和有符号加法

发生溢出时将结果限制在 [I64_MIN, I64_MAX] 范围内。

a:第一个操作数 b:第二个操作数 返回值:饱和后的 a + b

fun sat_sub

pub fun sat_sub(a: i64, b: i64) i64;

饱和有符号减法

发生溢出时将结果限制在 [I64_MIN, I64_MAX] 范围内。

a:第一个操作数 b:第二个操作数 返回值:饱和后的 a - b

fun sat_mul

pub fun sat_mul(a: i64, b: i64) i64;

饱和有符号乘法

发生溢出时将结果限制在 [I64_MIN, I64_MAX] 范围内。

a:第一个操作数 b:第二个操作数 返回值:饱和后的 a * b