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)
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))
ZnVuY3Rpb24gd2l0aGluKG5leHRfcmVzdWx0X2Z1bmN0aW9uLCBlcHNpbG9uKQogICAgcHJldl9yZXN1bHQgPSBuZXh0X3Jlc3VsdF9mdW5jdGlvbigpCiAgICBjdXJyX3Jlc3VsdCA9IG5leHRfcmVzdWx0X2Z1bmN0aW9uKCkKICAgIHdoaWxlIG1hdGguYWJzKHByZXZfcmVzdWx0IC0gY3Vycl9yZXN1bHQpID4gZXBzaWxvbiBkbwogICAgICAgIHByZXZfcmVzdWx0ID0gY3Vycl9yZXN1bHQKICAgICAgICBjdXJyX3Jlc3VsdCA9IG5leHRfcmVzdWx0X2Z1bmN0aW9uKCkKICAgIGVuZAogICAgcmV0dXJuIGN1cnJfcmVzdWx0CmVuZAoKZnVuY3Rpb24gbmV3dG9uX3JhcGhzb25fc3FydChyYWRpY2FuZCwgZXBzaWxvbiwgZ3Vlc3MpCiAgICBzcXVhcmVfcm9vdCA9IGd1ZXNzCiAgICBmdW5jdGlvbiBuZXh0KCkKICAgICAgICBzcXVhcmVfcm9vdCA9IChzcXVhcmVfcm9vdCArIHJhZGljYW5kIC8gc3F1YXJlX3Jvb3QpIC8gMi4wCiAgICAgICAgcmV0dXJuIHNxdWFyZV9yb290CiAgICBlbmQKICAgIHJldHVybiB3aXRoaW4obmV4dCwgZXBzaWxvbikKZW5kCgpwcmludChuZXd0b25fcmFwaHNvbl9zcXJ0KDkuMCwgMWUtMiwgMTAuMCkpCnByaW50KG5ld3Rvbl9yYXBoc29uX3NxcnQoOS4wLCAxZS05LCAxMC4wKSkK