[R] Rmpfr question

Martin Maechler maechler at stat.math.ethz.ch
Sat Oct 16 22:33:29 CEST 2010


>>>>> Ulises M Alvarez <uma at fata.unam.mx>
>>>>>     on Sat, 16 Oct 2010 14:34:25 -0500 writes:

    > Hi: I'm trying to reproduce an arbitrary precision
    > constant from 'Why and How to Use Arbitrary Precision'
    > (Ghazi et al., COMPUTING IN SCIENCE & ENGINEERING May/June
    > 2010; http://perso.ens-lyon.fr/philippe.theveny/cise.pdf):

    > d = 173746a + 94228b − 78487c

    > where: a = sin(1022), b = log(17.1), and c = exp(0.42).
      	         ^^^^^^^^^
  from what you do below, this should be  sin(10^22)

    > Ghazi et al. report: d = −1.341818958e−12 whit IEEE-754
    > quadruple precision (113 bits).

    > I have tried to reproduce such result using the Rmpfr
    > library using:

    > a <- mpfr(sin(10^22), 230)

if you think a bit, it's clear that this cannot work!
sin(10^22) is computed with only double precision, hence is
inaccurate, only using 53 bits.

    > b <- mpfr(log(171/10), 230)

the same here, of course

    > c <- mpfr(exp(42/100), 230)

and here.
    > (d <- 173746*a + 94228*b - 78487*c)

    > 1 'mpfr' number of precision  230   bits
    > [1] 
    > 2.9904079212883516447618603706359863281250000000000000000000000000000000e-11

    > Which does not correspond to the value reported by Ghazi et al.

    > Could any one give me some some hint on how to obtain a value closer to 
    > the one of −1.341818958e−12 please.

I hope I'm not doing your home work here.
The correct solution of course is

> a <- sin(mpfr(10, 230)^22)
> b <- log(mpfr(171, 230)/10)
> c <- exp(mpfr(42, 230)/100)
> (d <- 173746*a + 94228*b - 78487*c)
1 'mpfr' number of precision  230   bits 
[1] -1.3418189578296195497042786842309588809452366232139762407816198747581278e-12
> 

Best regards,
Martin Maechler, ETH Zurich

    > (Yes, I have reproduce the 'd' value from Ghazi et al. using  'gcc 
    > -lmpfr -lgmp' on linux boxes).

    > #################
    > Session info:
    > R version 2.11.1 (2010-05-31)
    > x86_64-apple-darwin9.8.0

    > locale:
    > [1] C

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

    > other attached packages:
    > [1] Rmpfr_0.2-3

    > loaded via a namespace (and not attached):
    > [1] tools_2.11.1

    > (Have also tried with R on Linux boxes without success)
    > -- 
    > Ulises M. Alvarez
    > http://www.fata.unam.mx/



More information about the R-help mailing list