[Rd] RH 9 and R 1.7.0 Beta - Errors Resolved

Paul Gilbert pgilbert at bank-banque-canada.ca
Sun Apr 6 12:44:00 MEST 2003


I don't seem to have this problem on Mandrake 9.1 which has 
gcc 3.2.2 (Mandrake Linux 9.1 3.2.2-3mdk) and using R-1.7.0beta2003-03-31
compiled with the defaults. That is, I get the latter results even without the
fix.

Paul Gilbert

Marc Schwartz wrote:
> 
> Hi all,
> 
> As you may recall, earlier this week I posted about errors in make check
> using 1.7.0 Beta under RH 9.
> 
> Peter kindly contacted me off list and we have been running some checks
> and possible resolutions the past couple of days.
> 
> The errors turned out to be (run individually):
> 
>  > !is.nan(c(1.,NA))
> [1]  TRUE FALSE
> 
>  > is.nan(c   (1.,NaN,NA))
> [1] FALSE  TRUE  TRUE
> 
>  > is.nan(list(1.,NaN,NA))
> [1] FALSE  TRUE FALSE
> 
>  > is.nan(as.numeric(NA))
> [1] TRUE
> 
> After doing some debugging, we identified some problems that ultimately
> led us to the conclusion that there are optimization problems with the
> current gcc in RH 9, which is:
> 
> gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)
> 
> We confirmed this running
> 
> ./configure CFLAGS="-O0 -g"
> 
> and I was able to run make check without errors.
> 
> Bottom line, it appears that R_NaReal was not being set properly. It
> would take the value of nan(0x8000000000000) instead of
> nan(0x80000000007a2). This is set in R_NaReal = R_ValueOfNA().
> 
> The present version in arithmetic.c is:
> 
>   117 static double R_ValueOfNA(void)
>   118 {
>   119     ieee_double x;
>   120     x.word[hw] = 0x7ff00000;
>   121     x.word[lw] = 1954;
>   122     return x.value;
>   123 }
> 
> The change is in line 119 to:
> 
> volatile ieee_double x;
> 
> This has resolved the problem and now results in no errors being
> reported during make check with the default ./configure.
> 
> Thus, now using:
> 
> R : Copyright 2003, The R Development Core Team
> Version 1.7.0 Under development (unstable) (2003-04-05)
> 
> I get:
> 
>  > !is.nan(c(1.,NA))
> [1] TRUE TRUE
> 
>  > is.nan(c   (1.,NaN,NA))
> [1] FALSE  TRUE FALSE
> 
>  > is.nan(list(1.,NaN,NA))
> [1] FALSE  TRUE FALSE
> 
>  > is.nan(as.numeric(NA))
> [1] FALSE
> 
> Many thanks to Peter for his patience and support is guiding me through
> this process!  Peter has indicated that he will incorporate this change
> into the base code.
> 
> Best regards,
> 
> Marc Schwartz
> 
> ______________________________________________
> R-devel at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list