sqrt' :: Double -> Double -> Double sqrt' x guess
| guessIsGoodEnough = guess
where
-- Test the precision of the guess
precision = 1e-15
guessIsGoodEnough = abs (guess * guess - x) < precision * x
-- Improve our guessed square
improvedGuess = (guess + x / guess) / 2
main = putStrLn.show $ 1.0/((sqrt' 1234567899 1) + (sqrt' 1234567898 1))
CnNxcnQnIDo6IERvdWJsZSAtPiBEb3VibGUgLT4gRG91YmxlCnNxcnQnIHggZ3Vlc3MKICB8IGd1ZXNzSXNHb29kRW5vdWdoID0gZ3Vlc3MKICB8IG90aGVyd2lzZSAgICAgICAgID0gc3FydCcgeCBpbXByb3ZlZEd1ZXNzCiAgd2hlcmUKICAgIC0tIFRlc3QgdGhlIHByZWNpc2lvbiBvZiB0aGUgZ3Vlc3MKICAgIHByZWNpc2lvbiAgICAgICAgICA9IDFlLTE1CiAgICBndWVzc0lzR29vZEVub3VnaCAgPSBhYnMgKGd1ZXNzICogZ3Vlc3MgLSB4KSA8IHByZWNpc2lvbiAqIHgKICAgIC0tIEltcHJvdmUgb3VyIGd1ZXNzZWQgc3F1YXJlCiAgICBpbXByb3ZlZEd1ZXNzICAgICAgPSAoZ3Vlc3MgKyB4IC8gZ3Vlc3MpIC8gMgoKbWFpbiA9IHB1dFN0ckxuLnNob3cgJCAxLjAvKChzcXJ0JyAxMjM0NTY3ODk5IDEpICsgKHNxcnQnIDEyMzQ1Njc4OTggMSkpCg==