[Openmcl-devel] Printing/Reading floats

Raymond Wiker Raymond.Wiker at fast.no
Mon Mar 17 09:32:09 PST 2003


Christophe Rhodes writes:
 > Gary Byers <gb at clozure.com> writes:
 > 
 > > I can't think of a more portable way to read/write floats in CL: if
 > > there's a CL function that does the inverse of INTEGER-DECODE-FLOAT,
 > > I can't remember what it's called.
 > >
 > > ? (multiple-value-call #'hypothetical-integer-encode-float
 > >      (integer-decode-float f))
 > >
 > > would (hypothetically) be guaranteed to be EQL to f (at least for
 > > normalized cases) and the integer triples could be read/written
 > > accurately.
 > 
 > IANAFPExpert, but would
 > 
 > (defun hypothetical-integer-encode-float (sig exp sign)
 >   (float (* sign (/ sig (expt 2 exp)))))
 > 
 > be close?  Obviously there are issues wrt single/doubleness, but...

        How about 

(defun hypothetical-integer-encode-float (sig exp sign)
  (* sign (scale-float (float sig) exp)))

        (Actually, I just tried this, in SBCL, with pi - didn't look
to good :-)

        BTW: In Henry Baker's "Pragmatic Parsing" paper there is a
reference to a paper by William Clinger:

Clinger, William D. "How to Read Floating Point Numbers Accurately".
ACM PLDI'90. Sigplan Not. 25,6 (June 1990), 92-101

-- 
Raymond Wiker                        Mail:  Raymond.Wiker at fast.no
Senior Software Engineer             Web:   http://www.fast.no/
Fast Search & Transfer ASA           Phone: +47 23 01 11 60
P.O. Box 1677 Vika                   Fax:   +47 35 54 87 99
NO-0120 Oslo, NORWAY                 Mob:   +47 48 01 11 60

Try FAST Search: http://alltheweb.com/


_______________________________________________
Openmcl-devel mailing list
Openmcl-devel at clozure.com
http://clozure.com/cgi-bin/mailman/listinfo/openmcl-devel



More information about the Openmcl-devel mailing list