def u32_op
bend-collections-laws-math@1.0.0.0 · src/math/instances.bend:28
import bend-collections-laws-math@1.0.0.0/src/math/instances.bend as Instances
import Base
import bend-collections-laws-math@1.0.0.0/src/math/num.bend as N
import bend-collections-laws-math@1.0.0.0/src/math/w64.bend as X
28def u32_op(o: N.Op<U32>) -> U32:
29 match o:
30 case N.ZeroOp{}:
31 0
32 case N.One{}:
33 1
34 case N.Add{a, b}:
35 U32.add(a, b)
36 case N.Sub{a, b}:
37 U32.sub(a, b)
38 case N.Mul{a, b}:
39 U32.mul(a, b)
40 case N.Neg{a}:
41 U32.sub(0, a)
42 case N.Abs{a}:
43 a
44 case N.Quot{a, b}:
45 U32.div(a, b)
46 case N.Rem{a, b}:
47 U32.mod(a, b)
48 case N.Half{a}:
49 U32.shr(a)
50 case N.MulMod{a, b, m}:
51 u32_mulmod(a, b, m)
52 case N.Pow2{k}:
53 X.pow2(k)
54 case N.Sqrt{a}:
55 X.isqrt32(a)
56 case N.PowMod{a, e, m}:
57 X.mpow32(a, e, m)
58
59 case N.GcdSmall{a, b}:
60 0