On 17/01/2014 18:58, Gábor Csárdi wrote:
Hi all,

I just run into this today. Apparently rexp() sometimes gives different
slightly results for the same seed on 32 bit and 64 bit machines. runif()
is the same for both, so the problem seems to be in rexp().

Rather, the 'problem' is in your expectations: different builds of R should be expected to give different results.

A better way to look at the fine detail of doubles is

> sprintf("%a", foo) # 64-bit
[1] "0x1.1f5a6e68a593p-2"
> sprintf("%a", foo) # 32-bit
[1] "0x1.1f5a6e68a5931p-2"

on my Fedora box. (Otherwise the difference might well have been in the binary to decimal conversion used for printing.)

And for the record: the reasons 32-bit results are often different
include that the lowest common denominator for i686 cpus[*] is lower
than for x86_64 ones. Also, the OS X results quoted most likely are for
the CRAN distribution using a rather old compiler which does not
optimize as well as current ones, and you are comparing different
runtimes (libc), whereas I was comparing i686 and x86_64 compiles on the
same machine, with the same compiler/runtime versions.

[*] And for R for Windows i386 cpus are still supported, alongside Windows XP.


64 bit Linux is the same as 64 bit OSX, and R-devel gives the same results
as R-3.0.2.

Best,
Gabor

# ---------------------------------------------
options(digits=22) ; set.seed(9) ; rexp(1, 5)
[1] 0.2806184054728815824298
options(digits=22) ; set.seed(9) ; runif(1)
[1] 0.2216013972647488117218
sessionInfo()
R version 3.0.2 (2013-09-25)
Platform: i686-pc-linux-gnu (32-bit)

locale:
  [1] LC_CTYPE=en_US.utf8       LC_NUMERIC=C
  [3] LC_TIME=en_US.utf8        LC_COLLATE=en_US.utf8
  [5] LC_MONETARY=en_US.utf8    LC_MESSAGES=en_US.utf8
  [7] LC_PAPER=en_US.utf8       LC_NAME=C
  [9] LC_ADDRESS=C              LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.utf8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

# ---------------------------------------------
options(digits=22) ; set.seed(9) ; rexp(1, 5)
[1] 0.2806184054728815269186
options(digits=22) ; set.seed(9) ; runif(1)
[1] 0.2216013972647488117218
sessionInfo()
R version 3.0.2 (2013-09-25)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

        [[alternative HTML version deleted]]

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



--
Brian D. Ripley,                  rip...@stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

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

Reply via email to