diff --git a/code/numbers.lisp b/code/numbers.lisp index b996425e64be3cf996d4a87928b7c96794441946..06275f036978da4edc772710c9963d837b809f41 100644 --- a/code/numbers.lisp +++ b/code/numbers.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/numbers.lisp,v 1.41 2002/03/14 21:29:42 toy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/numbers.lisp,v 1.42 2002/06/19 15:08:55 toy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -244,12 +244,17 @@ (declaim (inline build-ratio)) (defun build-ratio (num den) (multiple-value-bind (num den) - (if (minusp den) - (values (- num) (- den)) - (values num den)) - (if (eql den 1) - num - (%make-ratio num den)))) + (if (minusp den) + (values (- num) (- den)) + (values num den)) + (cond ((eql den 1) + num) + ((eql den 0) + (error 'division-by-zero + :operands (list num den) + :operation 'build-ratio)) + (t + (%make-ratio num den))))) ;;; MAYBE-TRUNCATE -- Internal