]> git.rkrishnan.org Git - sicp.git/blob - src/sicp/ex1_8.clj
Solution to 4.44. A bit too verbose. Can be improved by better
[sicp.git] / src / sicp / ex1_8.clj
1 (ns sicp.ex1_8
2   (:use [sicp utils]
3         [clojure.contrib trace test-is]))
4
5 ;; exercise 1.8: cube root
6 (defn improve [guess x]
7   (/ (+ (/ x (square guess)) (* 2 guess)) 3))
8
9 (defn cubert-iter [old-guess new-guess x]
10   (if (good-enough? old-guess new-guess x)
11     new-guess
12     (cubert-iter new-guess (improve new-guess x)
13                  x)))
14
15 (defn cuberoot [x]
16   (cubert-iter x 1.0 x))
17
18 (comment
19 user> (cuberoot (cube 2))
20 2.000000000012062
21 user> (cuberoot (cube 10))
22 10.000000000000002
23 user> (cuberoot (cube 9))
24 9.000000000053902
25 user> (cuberoot (cube 0.001))
26 0.001000000000000962
27 user> (cuberoot (cube 0.0001))
28 1.000000000000001E-4
29 user>
30 )