Hello,

Under R 4.5.0 on Windows (x86-64), I get:

> sqrt(.Machine$double.xmax)^2
[1] Inf
> sqrt(.Machine$double.xmax)*sqrt(.Machine$double.xmax)
[1] Inf

On other hand on other platforms, including Debian Linux (x86-64), I
get:

d> sqrt(.Machine$double.xmax)^2
[1] 1.797693134862315508561e+308
d> sqrt(.Machine$double.xmax)*sqrt(.Machine$double.xmax)
[1] 1.797693134862315508561e+308

Windows is running inside a VirtualBox instance on the same host as
Linux. I don't have direct results from the MacOS platforms, but based
on the symptoms that had led me to investigate, the behaviour is as the
Linux.

Adding to the mystery, if I implement the same operation in C, e.g.,

library(inline)
sqrsqrt <- cfunction(sig = c(x = "numeric"), language = "C", "
  double sqrtx = sqrt(Rf_asReal(x));
  return Rf_ScalarReal(sqrtx*sqrtx);
")

R on Linux yields:

d> sqrsqrt(.Machine$double.xmax)
[1] 1.797693134862315508561e+308

i.e., the same number, whereas R on Windows yields:

d> sqrsqrt(.Machine$double.xmax)
[1] 1.797693134862315508804e+308

which is not Inf but not the same as Linux either.

Lastly, on both platforms,

d> sqrsqrt(.Machine$double.xmax) < .Machine$double.xmax
[1] TRUE

I am not sure if this is a bug, intended behaviour, or something else.

                                Best Regards,
                                Pavel
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to