(defn square [x] (* x x)) (defn good-enough? [previous current] (>= (* current 0.001) (math/abs (- current previous)))) (defn average [x y] (/ (+ x y) 2)) (defn improve [guess x] (average guess (/ x guess))) (defn sqrt-iter [prev guess x] (if (good-enough? prev guess) guess (sqrt-iter guess (improve guess x) x))) (defn sqrt [x] (sqrt-iter 0.0 x x)) (var i 0.0000001) (while (<= i 1000000000000.0) (def meas (sqrt i)) (def rel (/ (- meas (math/sqrt i)) meas)) (print (string/format "Relative error %f=%f, %f" (math/sqrt i) meas rel)) (set i (* i 3.141519)))