codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
; interval arithmetic (define (plus x y) (cons (+ (car x) (car y)) (+ (cdr x) (cdr y)))) (define (minus x y) (cons (- (car x) (cdr y)) (- (cdr x) (car y)))) (define (times x y) (cons (min (* (car x) (car y)) (* (car x) (cdr y)) (* (cdr x) (car y)) (* (cdr x) (cdr y))) (max (* (car x) (car y)) (* (car x) (cdr y)) (* (cdr x) (car y)) (* (cdr x) (cdr y))))) (define (divide x y) (if (< (car y) 0 (cdr y)) (error 'divide "divide by zero") (cons (min (/ (car x) (car y)) (/ (car x) (cdr y)) (/ (cdr x) (car y)) (/ (cdr x) (cdr y))) (max (/ (car x) (car y)) (/ (car x) (cdr y)) (/ (cdr x) (car y)) (/ (cdr x) (cdr y)))))) (define (ends->center x) (cons (/ (+ (car x) (cdr x)) 2) (/ (- (cdr x) (car x)) 2))) (define (center->ends x) (cons (- (car x) (cdr x)) (+ (car x) (cdr x)))) (define x (cons 1 2)) (define y (cons 3 4)) (display (plus x y)) (newline) (display (minus x y)) (newline) (display (times x y)) (newline) (display (divide x y)) (newline) (display (ends->center x)) (newline) (display (center->ends (cons 3/2 1/2))) (newline) (display (divide x x)) (newline)
Private
[
?
]
Run code
Submit