def sbb
import bend-lawful-stdlib@0.1.0.0/src/float/bin.bend as Binimport Base
113# a - b - borrow, for a >= b (callers order the operands with cmp first)
114def sbb(a: Bin, b: Bin, +w: Bool) -> Bin:
115 match a b:
116 case a BZ{}:
117 sbb.one(a, w)
118 case BZ{} b:
119 BZ{}
120 case B0{x} B0{y}:
121 cons(w, sbb(x, y, w))
122 case B0{x} B1{y}:
123 cons(Bool.not(w), sbb(x, y, True{}))
124 case B1{x} B0{y}:
125 cons(Bool.not(w), sbb(x, y, False{}))
126 case B1{x} B1{y}:
127 cons(w, sbb(x, y, w))