def u64_op

bend-collections-laws-math@1.0.0.0 · src/math/instances.bend:92

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/u64.bend as W
import bend-collections-laws-math@1.0.0.0/src/math/w64.bend as X
import bend-collections-laws-math@1.0.0.0/src/math/natural.bend as M

92def u64_op(o: N.Op<W.U64>) -> W.U64:
93  match o:
94    case N.ZeroOp{}:
95      W.U64{0, 0}
96    case N.One{}:
97      W.U64{1, 0}
98    case N.Add{a, b}:
99      X.add(a, b)
100    case N.Sub{a, b}:
101      X.sub(a, b)
102    case N.Mul{a, b}:
103      X.mul(a, b)
104    case N.Neg{a}:
105      X.sub(W.U64{0, 0}, a)
106    case N.Abs{a}:
107      a
108    case N.Quot{a, b}:
109      X.quot(a, b)
110    case N.Rem{a, b}:
111      X.rem(a, b)
112    case N.Half{a}:
113      X.half(a)
114    case N.MulMod{a, b, m}:
115      X.mulmod(a, b, m)
116    case N.Pow2{k}:
117      u64_pow2(k)
118    case N.Sqrt{a}:
119      X.isqrt(a)
120    case N.PowMod{a, e, m}:
121      X.mpow(a, e, m)
122
123    case N.GcdSmall{a, b}:
124      X.of48(M.gcd(X.n48(a), X.n48(b)))

Uses (15)

Used by (110)