(define (square x)
(* x x))
(define (assert x)
(if (not x)
(display "wrong!")))
(assert (= 4 (square 2)))
(define (improve guess x)
(/ (+ guess (/ x guess)) 2))
(assert (= (improve 1 2) 1.5))
(define (good-enough guess x)
(< (abs (- (square guess) x)) 0.000001))
(assert (good-enough 2 4))
(define (sqrt-iter guess x)
(if (good-enough guess x)
guess
(sqrt-iter (improve guess x) x)))
(define (sqrt x)
(sqrt-iter 1.0 x))
(assert (= (sqrt 40000) 200))