0.8.11.11:
authorChristophe Rhodes <csr21@cam.ac.uk>
Tue, 15 Jun 2004 19:50:43 +0000 (19:50 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Tue, 15 Jun 2004 19:50:43 +0000 (19:50 +0000)
Better %UNARY-FTRUNCATE behaviour
... 158 failures (out of 21597, version 1.4)
... woohoo.  "Two nines" compliance!

src/compiler/float-tran.lisp
version.lisp-expr

index c18356b..8676c1e 100644 (file)
 (macrolet
     ((def (float-type fun)
         `(deftransform %unary-ftruncate ((x) (,float-type))
-          (let ((x-type (lvar-type x))
-                ;; these bounds may look wrong, but in fact they're
-                ;; right: floats within these bounds are those which
-                ;; TRUNCATE to a (SIGNED-BYTE 32).  ROUND would be
-                ;; different.
-                (low-bound (coerce (- (ash 1 31)) ',float-type))
-                (high-bound (coerce (ash 1 31) ',float-type)))
-            (if (csubtypep x-type
-                           (specifier-type
-                            `(,',float-type (,low-bound) (,high-bound))))
-                '(coerce (%unary-truncate x) ',float-type)
-                `(if (< ,low-bound x ,high-bound)
-                     (coerce (%unary-truncate x) ',',float-type)
-                     (,',fun x)))))))
+           '(,fun x))))
   (def single-float %unary-ftruncate/single)
   (def double-float %unary-ftruncate/double))
index b7bac15..2b07b2f 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.11.10"
+"0.8.11.11"