function within(next_result_function, epsilon)
prev_result = next_result_function()
curr_result = next_result_function()
while math.abs(prev_result - curr_result) > epsilon do
prev_result = curr_result
curr_result = next_result_function()
end
return curr_result
end
function newton_raphson_sqrt(radicand, epsilon, guess=10.0)
square_root = guess
function next()
square_root = (square_root + radicand / square_root) / 2.0
return square_root
end
return within(next, epsilon)
end
print(newton_raphson_sqrt(9.0, 1e-2, 10.0))
print(newton_raphson_sqrt(9.0, 1e-9, 10.0))
ZnVuY3Rpb24gd2l0aGluKG5leHRfcmVzdWx0X2Z1bmN0aW9uLCBlcHNpbG9uKQogICAgcHJldl9yZXN1bHQgPSBuZXh0X3Jlc3VsdF9mdW5jdGlvbigpCiAgICBjdXJyX3Jlc3VsdCA9IG5leHRfcmVzdWx0X2Z1bmN0aW9uKCkKICAgIHdoaWxlIG1hdGguYWJzKHByZXZfcmVzdWx0IC0gY3Vycl9yZXN1bHQpID4gZXBzaWxvbiBkbwogICAgICAgIHByZXZfcmVzdWx0ID0gY3Vycl9yZXN1bHQKICAgICAgICBjdXJyX3Jlc3VsdCA9IG5leHRfcmVzdWx0X2Z1bmN0aW9uKCkKICAgIGVuZAogICAgcmV0dXJuIGN1cnJfcmVzdWx0CmVuZAoKZnVuY3Rpb24gbmV3dG9uX3JhcGhzb25fc3FydChyYWRpY2FuZCwgZXBzaWxvbiwgZ3Vlc3M9MTAuMCkKICAgIHNxdWFyZV9yb290ID0gZ3Vlc3MKICAgIGZ1bmN0aW9uIG5leHQoKQogICAgICAgIHNxdWFyZV9yb290ID0gKHNxdWFyZV9yb290ICsgcmFkaWNhbmQgLyBzcXVhcmVfcm9vdCkgLyAyLjAKICAgICAgICByZXR1cm4gc3F1YXJlX3Jvb3QKICAgIGVuZAogICAgcmV0dXJuIHdpdGhpbihuZXh0LCBlcHNpbG9uKQplbmQKCnByaW50KG5ld3Rvbl9yYXBoc29uX3NxcnQoOS4wLCAxZS0yLCAxMC4wKSkKcHJpbnQobmV3dG9uX3JhcGhzb25fc3FydCg5LjAsIDFlLTksIDEwLjApKQo=