Hi again,

So, I checked out the latest version from CVS and it does seem to work.
I showed my friend John Tromp (another Rubyist) the problem, and he thinks
we are all barking up the wrong tree here: he says the problem is only in
strtod and there is no validity to the argument we've convinced ourselves
concerning inexact decimal representations making it impossible; he looked
at the strtod code in the ruby CVS, and thinks the technique using the
table of powers of ten is inherently imprecise.  To test this, I changed 
the ruby_strtod in util.c to call through to the standard libc strtod, and
now all the tests pass, even when I deactivate Nobu's load_mantissa.  I
looked at the strtod used in glibc version 2.3.2 and it uses the MP library
to do exact integer arithmetic; I suppose this explains the bug further.
It looks like the glibc strtod.c is about 1600 lines -- so it seems a rather
tedious but well-defined task to convert this glibc strtod.c to use
Nobu's BIGNUM routines solve this bug correctly.  Any volunteers?
Otherwise I think we will be stuck with a hackish (but working) Marshal
representation for Float in Ruby 1.8.

Rudi