diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2023-03-05 20:58:20 +0100 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2023-03-05 20:58:20 +0100 |
| commit | 592ef89cb282ab33d6b10cacae711a4a8e6b1212 (patch) | |
| tree | e945b18ad80cd466639ee2beee3de77da09f1144 /coding-exercises/2/7.rkt | |
| parent | ad461cbbbf839d040cda5d38f72072bbc20b5e4f (diff) | |
start ch2
Diffstat (limited to 'coding-exercises/2/7.rkt')
| -rw-r--r-- | coding-exercises/2/7.rkt | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/coding-exercises/2/7.rkt b/coding-exercises/2/7.rkt new file mode 100644 index 0000000..13f28a6 --- /dev/null +++ b/coding-exercises/2/7.rkt @@ -0,0 +1,45 @@ +#lang racket +(provide + make-interval + upper-bound + lower-bound + add-interval + mul-interval + div-interval + print-interval) + +(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 (lower-bound x) (car x)) +(define (upper-bound x) (cdr x)) + +(define (print-interval x) + (newline) + (display "interval{") + (display (lower-bound x)) + (display ",") + (display (upper-bound x)) + (display "}") + (newline)) + +(define (print) + (define test-interval (make-interval 1 2)) + (print-interval test-interval)) + +(print) |
