Bug 21191

Summary: R mis-reports machine constants
Product: [Retired] Red Hat Powertools Reporter: Plummer, Martyn <plummer>
Component: R-baseAssignee: Tim Powers <timp>
Status: CLOSED ERRATA QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: 7.0   
Target Milestone: ---   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2000-12-21 20:55:11 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 21188    
Bug Blocks:    

Description Plummer, Martyn 2000-11-21 17:15:36 UTC
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.

Comment 1 Tim Powers 2000-11-21 20:16:06 UTC
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

Comment 2 Tim Powers 2000-12-21 20:54:53 UTC
OK. It's fixed and an errata has been issued since gcc was errata'd yesterday.

Tim