another? nails double bug
Torbjorn Granlund
tg at swox.com
Sun Nov 16 22:57:12 CET 2008
jason at njkfrudils.plus.com writes:
config.guess
athlon-pc-linux-gnu
gcc 4.2.3
gmp-4.2.4 + 2patches
configure --enable-assert --enable-nails=8 && make && make check
in the mpq tests
t-get_d FAILS
with
check random test 187: bad mpq_set_d results
32-8=24 !< 24 single prec WHY???
I have no idea if this is the same bug as before , just feels like it!!!!
Thanks for this bug report!
It is a different problem from the previous ones you have reported,
actually.
This time it is a limitation in mpn/generic/get_d.c. It tries to
assembly a double mantissa from just three (24-bit) limbs, when 4 is
required. For 32-bit machines, nail sizes greater than 6 will not work
reliably.
(It might be counter intuitive that 4 limbs are needed for a 53 bit
value. It is because of that the value might be arbitrarily aligned.
The most significant limb might have just one bit, the 2nd most
significant and and the 3rd most significant will have 24 bits each, for
49 in total, i.e. < the required 53. With a 6-bit nail, the limbs will
have 26 bits each, and 1+26+26 >= 53.)
We're generalizing the nails support for the next GMP release, and this
problem was fixed with a rewrite of mpn/generic/get_d.c last year.
I will not patch this for GMP 4.2, since a patch would risk breaking
things for common configurations, and since nails are considered
experimental.
Of course, it would have been nice if configure refused to allow these
bad configurations. :-)
--
Torbjörn
More information about the gmp-bugs
mailing list