procedure sqrtapprox(i) local x, half half := rational(1, 2, 1) x := rational(integer(sqrt(i)), 1, 1) i := rational(i, 1, 1) repeat { suspend x x := mpyrat(half, addrat(x, divrat(i, x, 1), 1)) } end