Exercise 1.7: (back)
General:
The good-enough? test produces very inaccurate results for very small numbers. For example,
calculating the square root of 0.0001 would result in an answer of 0.01. However, running
the sqrt function gives a result that is ~3.2 times larger than the correct result. > (sqrt 0.0001) 0.03230844833048122 Testing for very large numbers (e.g. see below) produces a slightly different problem, in
that the operation never terminates. This is due the good-enough? function being unable to
guess large numbers to a precision of 0.001. > (sqrt 1e15) Error: Never Terminates
Scheme:
Alternative Version 1: (define (good-enough? guess x) (< (/ (abs (- (improve guess x) guess)) guess) 0.001)) Alternative Version 2: (define (good-enough? guess x) (cond [(and (< (abs (/ (improve guess x) guess)) 1.001) (> (abs (/ (improve guess x) guess)) 0.999)) true] [else false]))