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
|