From 39700dd3e405a40a23ddb4cad4f352c42843d62b Mon Sep 17 00:00:00 2001 From: dtc <dtc> Date: Mon, 5 Jan 1998 23:05:04 +0000 Subject: [PATCH] Fix to interval-mul for the handling of closed -0.0, from Raymond Toy. --- compiler/srctran.lisp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/compiler/srctran.lisp b/compiler/srctran.lisp index 76c051818..f251b2d7d 100644 --- a/compiler/srctran.lisp +++ b/compiler/srctran.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/compiler/srctran.lisp,v 1.71 1998/01/05 23:00:23 dtc Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/srctran.lisp,v 1.72 1998/01/05 23:05:04 dtc Exp $") ;;; ;;; ********************************************************************** ;;; @@ -597,9 +597,11 @@ nil) ((or (and (numberp x) (zerop x)) (and (numberp y) (zerop y))) - ;; Multiply by closed zero is special. The result is - ;; always a closed bound - 0) + ;; Multiply by closed zero is special. The result + ;; is always a closed bound. But don't replace this + ;; with zero; we want the multiplication to produce + ;; the correct signed zero, if needed. + (* (bound-value x) (bound-value y))) ((or (and (floatp x) (float-infinity-p x)) (and (floatp y) (float-infinity-p y))) ;; Infinity times anything is infinity -- GitLab