Commit 139b5ed6 authored by rtoy's avatar rtoy
Browse files

code/float.lisp:

o Forgot to implement FLOAT-PRECISION for double-doubles.

general-info/release-19f.txt:
o Document it.
parent 0a4ea0a4
Loading
Loading
Loading
Loading
+26 −2
Original line number Diff line number Diff line
@@ -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/float.lisp,v 1.41 2008/04/15 16:31:58 rtoy Exp $")
  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/float.lisp,v 1.42 2008/10/24 21:45:00 rtoy Exp $")
;;;
;;; **********************************************************************
;;;
@@ -348,7 +348,31 @@
      #+long-float
      ((long-float)
       (frob vm:long-float-digits vm:long-float-bias
	 integer-decode-long-denorm)))))
	     integer-decode-long-denorm))
      #+double-double
      ((double-double-float)
       ;; What exactly is the precision for a double-double?  We make
       ;; it the sum of the precisions of the two components.
       (let ((hi (double-double-hi f)))
	 (cond ((zerop hi)
		;; ANSI CL says the precision is 0
		0)
	       ((< (abs hi) (scale-float least-positive-normalized-double-float 53))
		;; For every power of 2 below this, we lose a bit of
		;; precision.  More or less.
		(let ((cutoff
		       (nth-value
			1
			(decode-float
			 (scale-float least-positive-normalized-double-float 53)))))
		  (multiple-value-bind (f exp)
		      (decode-float hi)
		    (declare (ignore f))
		    (- 106 (- cutoff exp)))))
	       (t
		;; Normally we have 106 bits of precision (twice the
		;; double-float precision)
		106)))))))


#+nil
+1 −0
Original line number Diff line number Diff line
@@ -89,6 +89,7 @@ New in this release:
      happen on other architectures.
    - The interpreter catches invalid EVAL-WHEN situations just like
      the compiler, instead of silently ignoring them.
    - FLOAT-PRECISION supports double-double floats.

  * Trac Tickets:
    - #16: Read-time hash-table issue