Hello!

My three Groschen:

On MacOS (Intel CPU) and R 4.4.3 I report:
> dput(.Machine$double.xmax, control = 'hex')
0x1.fffffffffffffp+1023
> dput(sqrt(.Machine$double.xmax), control = 'hex')
0x1.fffffffffffffp+511
> dput(sqrt(.Machine$double.xmax)^2, control = 'hex')
0x1.ffffffffffffep+1023
so as Ivan tested on Linux:

> ...which differs from R on Linux:
>
> dput(.Machine$double.xmax, control = 'hex')
> # 0x1.fffffffffffffp+1023
> dput(sqrt(.Machine$double.xmax), control = 'hex')
> # 0x1.fffffffffffffp+511
> dput(sqrt(.Machine$double.xmax)^2, control = 'hex')
> # 0x1.ffffffffffffep+1023
>
> --
> Best regards,
> Ivan
>
> --
Also I've found when I was researching sqrt algorithms that on x86_64 GCC
implements `sqrt` using machine instruction `sqrtsd` (sqrt scalar double):
https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_64/fpu/e_sqrt.c;h=33b59f67c10252bf8982303db2159f5a51c1ad9d;hb=f59f7adb4a00b7784cab1becdf257366104587b7

So if it's used, on recent Intel CPUs should return consistent results
among different platforms.
I wonder what happens on Windows in this matter.
--
Also, to test what clang does, I compiled simple program doing square root
of double value to assembly.
It also shows usage of machine instruction:
`sqrtsd  %xmm0, %xmm0`

I guess OP reports the problem in consistency between R implementations on
different OSs than precision itself.

regards,
Tomek.

        [[alternative HTML version deleted]]

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

Reply via email to