def Mag.sub
import bend-kit-bignum@0.1.0.0/bigint.bend as Bigintimport Base
90# a - b - w for a >= b + w. Leaves zero limbs on top: callers norm.
91def Mag.sub(a: List<&2, U32>, b: List<&2, U32>, +w: U32) -> List<&2, U32>:
92 match a b:
93 case Con{x, xs} Con{y, ys}:
94 +t = (x + 10000 - y - w : U32)
95 Con{(t % 10000 : U32), Mag.sub(xs, ys, (1 - t / 10000 : U32))}
96 case s Nil{}:
97 Mag.dec(s, U32.is_zero(w), w)
98 case Nil{} s:
99 Nil{}