Change method used by EXACT->INEXACT on integers. It turns out that
authorChris Hanson <org/chris-hanson/cph>
Mon, 28 Apr 1997 05:59:49 +0000 (05:59 +0000)
committerChris Hanson <org/chris-hanson/cph>
Mon, 28 Apr 1997 05:59:49 +0000 (05:59 +0000)
commit17b205d79e34573ce3892842e137aa1da8f4da57
tree5d88c38d2dfa083dff9bb40089db2b0b467bf21b
parentc96043c717525834bbdb78990274a1dba4c1cb95
Change method used by EXACT->INEXACT on integers.  It turns out that
the old method, the INT:->FLONUM, does not round reliably, and as a
consequence the LSB of the result is sometimes wrong.  However, the
conversion performed by INTEGER->FLONUM is accurate provided that the
integer being converted can be exactly represented by a flonum, i.e.
for IEEE double-precision floats, an integer with magnitude less than
(EXPT 2 53).

The algorithm used to convert ratnums to flonums already has this
property, so the integer conversion has been changed to use it.
v7/src/runtime/arith.scm