-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathsqrt.lisp
More file actions
37 lines (22 loc) · 786 Bytes
/
Copy pathsqrt.lisp
File metadata and controls
37 lines (22 loc) · 786 Bytes
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
(define abs (lambda (x) (if (> x 0) x (- 0 x))))
(define average (lambda (a b) (/ (+ a b) 2)))
(define square (lambda(x) (* x x)))
(define sqrt (lambda (x) (sqrt-iter 1.0 x)))
(define sqrt-iter (lambda (guess x) (if (good-enough? guess x) guess (sqrt-iter (improve2 guess x) x))))
(define good-enough? (lambda (guess x) (< (abs (- (square guess) x)) 0.00001)))
(define improve (lambda (guess x) (- guess (/ (f guess x) (f-prime guess)))))
(define improve2 (lambda (guess x) (average guess (/ x guess))))
(define f (lambda (x x-squared) (- (square x) x-squared)))
(define f-prime (lambda (x) (* 2 x)))
(sqrt-iter 1.0 9)
(good-enough? 3 9)
(good-enough? 3 25)
(good-enough? 5 25)
(improve 3 9)
(f 3 9)
(f-prime 3)
(sqrt 9)
(sqrt 25)
(sqrt 2.0)
(average 1 2)
(improve2 3 9)