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