Learning/SICP/exercise_1_8.janet
2025-03-12 21:31:22 +01:00

27 lines
607 B
Plaintext

(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)))