]> git.rkrishnan.org Git - sicp.git/blob - src/sicp/ex1_7.clj
Solution to 4.44. A bit too verbose. Can be improved by better
[sicp.git] / src / sicp / ex1_7.clj
1 (ns sicp.ex1_7
2   (:use [sicp utils]
3         [clojure.contrib trace test-is]))
4
5 ;; Exercise 1.7: The good-enough? test used in computing square roots will not
6 ;; be very effective for finding the square roots of very small numbers. Also,
7 ;; in real computers, arithmetic operations are almost always performed with
8 ;; limited precision. This makes our test inadequate for very large numbers.
9 ;; Explain these statements, with examples showing how the test fails for small
10 ;; and large numbers.
11 (comment
12  user> (sqrt (square 0.001))
13  0.031260655525445276
14  user> (sqrt (square 0.2))
15  0.20060990407779591
16  user> (sqrt (square 0.01))
17  0.03230844833048122
18  user> (sqrt (square 0.02))
19  0.0354008825558513
20  user> (sqrt (square 10))
21  10.000000000139897
22  user> (sqrt (square 100))
23  100.00000025490743
24  user> (sqrt (square 200))
25  200.000000510076
26  user> (sqrt (square 2))
27  2.0000000929222947
28  user> (sqrt (square 0.1))
29  0.10032578510960607
30  user> (sqrt (square 0.01))
31  0.03230844833048122
32  user> (sqrt (square 10000))
33  10000.0
34  user> (sqrt (square 20000))
35  20000.0
36  user> (sqrt (square 200000))
37  200000.0
38  user> (sqrt (square 20000000))
39  2.0E7
40  user> (sqrt (square 20000000000))
41  2.0E10
42  user> (sqrt (square 200000.012))
43  200000.012
44  user> (sqrt (square 2000000.123))
45  2000000.123
46  user> (sqrt (square 200000000.123))
47  2.00000000123E8
48  user> (sqrt (square 2000000000.123))
49  2.000000000123E9
50  user> (sqrt (square 20000000000.123))
51  2.0000000000123E10
52  user> (sqrt (square 2000000000000.123))
53  2.000000000000123E12
54  )