The R language includes a routine for determining the machine constants at
run time. This incorrectly reports the value of the double precision
To see the bug, start R (type "R" at the shell prompt) then type
which will print the value of the double precision. Or on a log scale
To quit R.
The value should be 2^-52, but is mis-reported as 2^-63 on an i686.
To quote Peter Dalgaard, one of the core developers "It is not merely a
matter of cosmetics, those machine constants actually get used for
determining convergence criteria and the like. Having them set too low
could send algorithms into infinite loops."
The bug is due to some over-zealous optimization on the part of gcc
2.96. I have filed a separate bug report on this (#21188).
This bug would have been found by including the step "make check" in the
build process, but this has been omitted from the spec file for R-base.
I'll have to wait until Jakub figures out what's up with gcc prior to releasing
an update. I am putting this on deferred until gcc is fixed, and making this bug
rely on the gcc bug in order to be fixed.
OK. It's fixed and an errata has been issued since gcc was errata'd yesterday.