def gcd_rb
import bend-collections-laws-crypto@1.0.0.0/src/math/generic.bend as Genericimport Base
import bend-collections-laws-crypto@1.0.0.0/src/math/num.bend as N
293def gcd_rb(~T: Data, ~op: N.Op<T> -> T, ~test: N.Test<T> -> Bool, +a: T, +b: T, bz: Bool) -> T:
294 match bz:
295 case True{}:
296 a
297 case False{}:
298 bg_a(~T, ~op, ~test, b, op(N.Rem{a, b}), test(N.IsZero{b}))