def mod_inverse
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
596# pow(a, -1, m): the x < m with a * x == 1 (mod m)
597def mod_inverse(~T: Data, ~op: N.Op<T> -> T, ~test: N.Test<T> -> Bool, +a: T, +m: T) -> Result<&2, &2, N.NumError, T>:
598 inv_ok(~T, ~op, ~test, a, m, test(N.IsZero{m}))