def iroot
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
409def iroot(~T: Data, ~op: N.Op<T> -> T, ~test: N.Test<T> -> Bool, +n: T, +k: Nat) -> Result<&2, &2, N.NumError, T>:
410 match k:
411 case 0n:
412 Fail{N.BadDomain{}}
413 case 1n+ +kp:
414 Done{iroot_k(~T, ~op, ~test, n, 1n+kp)}