home *** CD-ROM | disk | FTP | other *** search
- ;;; -*-Scheme-*-
- ;;;
- ;;; from BYTE Feb. 88 page 208
-
- (define (fixed-point f initial-value)
- (define epsilon 1.0e-10)
- (define (close-enough? v1 v2)
- (< (abs (- v1 v2)) epsilon))
- (define (loop value)
- (let ((next-value (f value)))
- (if (close-enough? value next-value)
- next-value
- (loop next-value))))
- (loop initial-value))
-
- (define (average-damp f)
- (lambda (x)
- (average x (f x))))
-
- (define (average x y)
- (/ (+ x y) 2))
-
- (define (sqrt x)
- (fixed-point (average-damp (lambda (y) (/ x y)))
- 1))
-
- (print (sqrt 2))
- (print (sqrt 4))
-