home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 2: PC / frozenfish_august_1995.bin / bbs / d09xx / d0963.lha / SIOD / scm / rational.scm < prev    next >
Text File  |  1992-12-12  |  927b  |  44 lines

  1. (define (gcd x y)
  2.         (if (= y 0)
  3.             x
  4.             (gcd y (remainder x y))))
  5.  
  6.  
  7. (define (+rat x y)
  8.         (make-rat
  9.               (+ (* (numer x) (denom y))
  10.                  (* (numer y) (denom x)))
  11.               (* (denom x) (denom y))))
  12.  
  13. (define (-rat x y)
  14.         (make-rat
  15.               (- (* (numer x) (denom y))
  16.                  (* (numer y) (denom x)))
  17.               (* (denom x) (denom y))))
  18.  
  19. (define (*rat x y)
  20.         (make-rat
  21.               (* (numer x) (numer y))
  22.               (* (denom x) (denom y))))
  23.  
  24. (define (/rat x y)
  25.         (make-rat
  26.               (* (numer x) (denom y))
  27.               (* (denom x) (numer y))))
  28.  
  29. (define (=rat x y)
  30.         (=
  31.           (* (numer x) (denom y))
  32.           (* (denom x) (numer y))))
  33.  
  34. (define (make-rat x y)
  35.         (cons (/ x (gcd x y)) (/ y (gcd x y))))
  36.  
  37. (define numer car)
  38.  
  39. (define denom cdr)
  40.  
  41. (define (prin-rat x)
  42.               (print (numer x) '/ (denom x)))
  43.  
  44.