bignum

std.math.bignum

rec Big

pub rec Big;

一个固定容量的大整数

fun zero

pub fun zero(b: *Big);

b 设置为零

fun norm

pub fun norm(b: *Big);

丢弃前导零的 limb,使 n 精确

fun from_u64

pub fun from_u64(b: *Big, v: u64);

b 设置为 v

fun is_zero

pub fun is_zero(b: *Big) bool;

当且仅当 b == 0 时为 true

fun to_u64

pub fun to_u64(b: *Big) u64;

b 的低 64 位(当 b < 2^64 时精确)

fun copy

pub fun copy(dst: *Big, src: *Big);

dst = src

fun cmp

pub fun cmp(a: *Big, b: *Big) i64;

a < b 返回 -1,相等返回 0,a > b 返回 1

fun mul_small

pub fun mul_small(b: *Big, m: u32);

b = b * m

fun shl

pub fun shl(b: *Big, bits: usize);

b = b << bits(乘以 2^bits)

fun add

pub fun add(a: *Big, b: *Big);

a = a + b

fun sub

pub fun sub(a: *Big, b: *Big);

a = a - b,要求 a >= b

fun add_small

pub fun add_small(b: *Big, x: u32);

b = b + x

fun mul_pow10

pub fun mul_pow10(b: *Big, k: usize);

b = b * 10^k

fun bitlen

pub fun bitlen(b: *Big) usize;

有效位数(当 b == 0 时为 0)