macrakis@marat.osf.fr (Stavros Macrakis) (12/29/89)
GNU Emacs 18.55.1 of Tue Oct 31 1989 on marat (hpux)
The following patch fixes the mod bug I reported yesterday:
--- in cl.el ---
(defun safe-idiv (a b)
"SAFE-IDIV A B => Q R S
Q=|A|/|B|, R is the rest, S is the sign of A/B."
(unless (and (numberp a) (numberp b))
(error "Arguments to `safe-idiv' must be numbers"))
(when (zerop b)
(error "Cannot divide %d by zero" a))
(let* ((absa (abs a))
(absb (abs b))
(q (/ absa absb))
; (s (signum (* a b))) ;; Can overflow
(s (* (signum a) (signum b))) ;; Can't overflow
(r (- a (* (* s q) b))))
(values q r s)))