aboutsummaryrefslogtreecommitdiffstats
path: root/test/square-root.scm
blob: 4c2c1cf06a6a5cb32d18ee8cba00d12e88580236 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
; see: https://mitpress.mit.edu/sicp/chapter1/node9.html

(define square
  (lambda (x)
    (* x x)))

(define average
  (lambda (x y)
    (/ (+ x y) 2)))

(define improve
  (lambda (guess x)
    (average guess (/ x guess))))

(define good-enough?
  (lambda (guess x)
    (< (abs (- x (square guess)))
       0.001)))

(define sqrt-iter
  (lambda (guess x)
    (if (good-enough? guess x)
      guess
      (sqrt-iter (improve guess x) x))))

(define test-sqrt
  (lambda (x)
    (sqrt-iter 1.0 x)))

(test-sqrt 9)
;  => 3.00009155413138
(test-sqrt (+ 100 37))
;  => 11.704699917758145
(test-sqrt (+ (test-sqrt 2) (test-sqrt 3)))
;  => 1.7739279023207892
(square (test-sqrt 1000))
;  => 1000.000369924366