fun nthRoot ← real by real n, real x, real precision Pair result ← real%real(x ⇒ x / n).named("previous", "current") while abs(result.current - result.previous) > precision result.previous ← result.current result.current ← ( (n - 1) * result.current + x / result.current ** (n - 1) ) / n end return result.current end writeLine("{ \"nthroot\": ", nthRoot(2, 152.2756, 0.00000000000001), ", \"builtin\": ", √152.2756, " }") writeLine("{ \"nthroot\": ", nthRoot(5, 34.0, 0.00000000000001), ", \"builtin\": ", 5 // 34.0, " }") writeLine("{ \"nthroot\": ", nthRoot(10, 42.0, 0.00000000000001), ", \"builtin\": ", 10 // 42.0, " }") writeLine("{ \"nthroot\": ", nthRoot(0.5, 7.0, 0.000000000001), ", \"builtin\": ", 0.5 // 7, " }")