On 1/15/2009 1:32 PM, David Winsemius wrote:
On Jan 15, 2009, at 12:25 PM, Charles C. Berry wrote:
This is what I get on windows XP:
tcp1-tcp2
[,1] [,2] [,3]
[1,] -2.861023e-06 -4.768372e-07 -4.768372e-07
[2,] -4.768372e-07 -3.814697e-06 2.622604e-06
[3,] -4.768372e-07 2.622604e-06 -5.960464e-08
but on my Gentoo Linux Intel Core 2 Duo:
print(tcp1-tcp2,digits=20)
[,1] [,2] [,3]
[1,] 0 0 0
[2,] 0 0 0
[3,] 0 0 0
So, it would seem to be that the floating point calcs on my Windows
box, David's Mac, and whatever system you are using are not as
accurate as they might be.
For the record; on an Intel Mac (Leopard) with Urbanek's compilation
of R 2.8.1
> print(tcp1-tcp2,digits=20)
[,1] [,2] [,3]
[1,] 0 0 0
[2,] 0 0 0
[3,] 0 0 0
I haven't debugged these, but I would guess this is because we have the
Windows libraries set to use extended precision (64 bit mantissas) on
intermediate results, whereas once things get stored to RAM, they are
rounded to double precision (53 bit mantissas). This has the benefit of
giving a more accurate answer in many circumstances, but the
disadvantage that the final results are more dependent on the order of
calculations. I think the other platforms never do the full extended
precision calculations, so their results are consistent (but probably
less accurate sometimes).
Duncan Murdoch
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.