(define (make-rat n d)
  (let ((g (gcd n d)))
    (cons (/ (*
      (abs n)
      (if (xnor (> n 0)
                (> d 0))
          1
          -1))
      g)
          (/ (abs d) g))))