diff --git a/SICP/exercise_1_7.janet b/SICP/exercise_1_7.janet new file mode 100644 index 0000000..efd0e64 --- /dev/null +++ b/SICP/exercise_1_7.janet @@ -0,0 +1,27 @@ +(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))) diff --git a/SICP/exercise_1_8.janet b/SICP/exercise_1_8.janet new file mode 100644 index 0000000..34c5986 --- /dev/null +++ b/SICP/exercise_1_8.janet @@ -0,0 +1,26 @@ +(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)))