diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2023-05-09 22:17:11 +0200 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2023-05-09 22:17:11 +0200 |
| commit | 591bda19951558d40d6ad11b49941c9ce8cd5704 (patch) | |
| tree | 13545fcd0c23fc729126eac4fab6dd0418638e16 /coding-exercises/2/83/install-real.rkt | |
| parent | d6752a78aa1dd2483a943acd2c3d8bb5fa6e8d2d (diff) | |
fixup
Diffstat (limited to 'coding-exercises/2/83/install-real.rkt')
| -rw-r--r-- | coding-exercises/2/83/install-real.rkt | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/coding-exercises/2/83/install-real.rkt b/coding-exercises/2/83/install-real.rkt index d82d48a..a232e5e 100644 --- a/coding-exercises/2/83/install-real.rkt +++ b/coding-exercises/2/83/install-real.rkt @@ -17,6 +17,15 @@ ;; constructor (put 'make 'real (lambda (x) (tagme (make x)))) ;; methods + + (define (gcd-real a b) + (if (and (integer? a) + (integer? b)) + (if (= b 0) + a + (gcd-real b (remainder a b))) + a)) + (put 'add '(real real) (lambda (x y) (tagme (make (+ x y))))) (put 'neg '(real) (lambda (x) (tagme (make (- x))))) (put 'sub '(real real) (lambda (x y) (tagme (make (- x y))))) @@ -25,6 +34,7 @@ (put 'raise '(real) raiseme) (put 'project '(real) (lambda (n) ((get 'make 'rational) n 1.0))) + (put 'greatest-common-divisor '(real real) (lambda (a b) (tagme (gcd-real a b)))) ;; sqrt and trig methods for complex nums (put 'sqr '(real) sqr) (put 'sqrt '(real) sqrt) |
