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 Machine()$double.eps which will print the value of the double precision. Or on a log scale log(Machine()$double.eps, base=2) Type q() 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. Tim
OK. It's fixed and an errata has been issued since gcc was errata'd yesterday. Tim