def U32.log2.go
import Base1576def 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))