% $Id: Sqrt.oz,v 1.2 2011/10/22 01:26:00 leavens Exp leavens $ declare fun {Sqrt X} % Requires: X > 0.0 fun {GoodEnough Guess} {Abs Guess*Guess - X} < 0.0001 end fun {Improve Guess} (Guess+(X/Guess))/2.0 % Newton's method end fun {SqrtIter Guess} if {GoodEnough Guess} then Guess else {SqrtIter {Improve Guess}} end end in {SqrtIter 1.0} end