Name: Anonymous 2008-09-09 17:27
good-enough(Guess, Value) :- abs(Guess**2 - Value) < 0.000001 .
improve-guess(Guess, Value, NewGuess) :- NewGuess is (Guess + (Value/Guess))/2 .
guess-root(Value, Guess, Result) :-
good-enough(Guess, Value) -> Result is Guess;
improve-guess(Guess, Value, NewGuess),
guess-root(Value, NewGuess, Result).
sqrt(X, Y) :- guess-root(X, 1, Y).