(define (add-interval x y) (make-interval (+ (lower-bound x) (lower-bound y)) (+ (upper-bound x) (upper-bound y)))) (define (mul-interval x y) (let ((p1 (* (lower-bound x) (lower-bound y))) (p2 (* (lower-bound x) (upper-bound y))) (p3 (* (upper-bound x) (lower-bound y))) (p4 (* (upper-bound x) (upper-bound y)))) (make-interval (min p1 p2 p3 p4) (max p1 p2 p3 p4)))) (define (div-interval x y) (mul-interval x (make-interval (/ 1.0 (upper-bound y)) (/ 1.0 (lower-bound y))))) (define (make-interval a b) (cons a b)) (define (upper-bound x) (cdr x)) (define (lower-bound x) (car x)) ; 1 ]=> (add-interval (make-interval 1 3) (make-interval 0 0.5)) ; ; ;Value: (1 . 3.5) ; ; 1 ]=> (mul-interval (make-interval -1 1) (make-interval 4 5)) ; ; ;Value: (-5 . 5) ; ; 1 ]=> (div-interval (make-interval 3 4) (make-interval 5 6)) ; ; ;Value: (.5 . .8)