internal API
Luna-Flow/luna-poly/internal 存放各实现包共用的辅助函数。MoonBit 规定 internal 包只能被同一模块内的包导入,因此本页记录的是各表示所依赖的契约;luna-poly 之外的代码无法调用它。
幂
pow_nat
从单位元 one 出发,用二进制快速幂计算自然数指数的 。
pub fn[A : Mul] pow_nat(A, UInt, one~ : A) -> A
- 无论
a是什么,pow_nat(a, 0, one=u)都返回u;库中每个pow(0)都由此返回一,包括对零也是如此。 - 它执行 次平方,并且对 的每个置位至多再做一次乘法,因此至多调用 次
*。 - 它只需要一个满足结合律、且以
one为左单位元的*;不需要交换律,因为它相乘的每个因子都是a的幂。
它用于多项式的幂(DensePolynomial::pow、TermPolynomial::pow、SparsePolynomial::pow),以及求值和代换过程中系数的幂 。
// Inside luna-poly only:
let p = @internal.pow_nat(base, 5U, one=DensePolynomial::one())