[gambit-list] Questions about reading from a port and u8vector
Marc Feeley
feeley at iro.umontreal.ca
Mon Jun 29 07:18:59 EDT 2009
On 27-Jun-09, at 12:17 AM, Marc Feeley wrote:
> The code below will write and read 64 bit floats. The IEEE 754
> representation is not guaranteed, but on most machines that is what
> you'll get. Beware that the endianness will be determined by the
> processor's native endianness.
I forgot to mention these conversion procedures which specifically
implement the IEEE 754 encoding of 32 and 64 bit floating point
numbers. They convert inexact reals to and from an exact integer
which is its 32 or 64 bit representation.
(##flonum.->ieee754-32 x) ;; convert flonum x to 32 bit
representation
(##flonum.->ieee754-64 x) ;; convert flonum x to 64 bit
representation
(##flonum.<-ieee754-32 n) ;; convert 32 bit representation n to
flonum
(##flonum.<-ieee754-64 n) ;; convert 64 bit representation n to
flonum
Here are a few examples:
> (##flonum.->ieee754-64 3.14159)
4614256650576692846
> (##flonum.<-ieee754-64 4614256650576692846)
3.14159
> (number->string (##flonum.->ieee754-32 1.0) 16)
"3f800000"
> (number->string (##flonum.->ieee754-64 1.0) 16)
"3ff0000000000000"
> (number->string (##flonum.->ieee754-64 -1.0) 16)
"bff0000000000000"
> (number->string (##flonum.->ieee754-64 2.0) 16)
"4000000000000000"
> (number->string (##flonum.->ieee754-64 (+ 1.0 (expt 0.5 52))) 16)
"3ff0000000000001"
> (number->string (##flonum.->ieee754-64 +inf.0) 16)
"7ff0000000000000"
Marc
More information about the Gambit-list
mailing list