def U32.log2.go

Base · base.bend:1576

import Base
1576def U32.log2.go(+k: Nat, +n: U32, b: Nat) -> Nat:
1577  match k:
1578    case 0n:
1579      b
1580    case 1n+p:
1581      +s = U32.to_nat(U32.shln(1, p))
1582      +t = Nat.mul(s, U32.to_nat(Bool.to_u32(U32.is_ne(U32.shrn(n, s), 0))))
1583      U32.log2.go(p, U32.shrn(n, t), Nat.add(b, t))

Uses (9)

Used by (1)