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

Uses (12)

Used by (156)