import Html exposing (text)
sqrt : Float -> Float
sqrt x =
if x >= 0 then
sqrt_iter 1 x
else
-1
sqrt_iter : Float -> Float -> Float
sqrt_iter guess x =
if good_enough guess x then
guess
else
sqrt_iter (improve guess x) x
good_enough : Float -> Float -> Bool
good_enough guess x = abs (square guess - x) < 0.001
square : Float -> Float
square x = x * x
average : Float -> Float -> Float
average x y = (x + y) / 2
improve : Float -> Float -> Float
improve guess x = average guess (x/guess)
main =
text (toString (sqrt 16))