Ravi Varadhan
2015-Jul-02 14:28 UTC
[R] Ramanujan and the accuracy of floating point computations - using Rmpfr in R
Hi, Ramanujan supposedly discovered that the number, 163, has this interesting property that exp(sqrt(163)*pi), which is obviously a transcendental number, is real close to an integer (close to 10^(-12)). If I compute this using the Wolfram alpha engine, I get: 262537412640768743.99999999999925007259719818568887935385... When I do this in R 3.1.1 (64-bit windows), I get: 262537412640768256.0000 The absolute error between the exact and R's value is 488, with a relative error of about 1.9x10^(-15). In order to replicate Wolfram Alpha, I tried doing this in "Rmfpr" but I am unable to get accurate results: library(Rmpfr)> exp(sqrt(163) * mpfr(pi, 120))1 'mpfr' number of precision 120 bits [1] 262537412640767837.08771354274620169031 The above answer is not only inaccurate, but it is actually worse than the answer using the usual double precision. Any thoughts as to what I am doing wrong? Thank you, Ravi [[alternative HTML version deleted]]
Boris Steipe
2015-Jul-02 17:18 UTC
[R] Ramanujan and the accuracy of floating point computations - using Rmpfr in R
Just a wild guess, but did you check exactly which operations are actually done to high precision? Obviously you will need high-resolution representations of pi and e to get an improved result. B. On Jul 2, 2015, at 10:28 AM, Ravi Varadhan <ravi.varadhan at jhu.edu> wrote:> Hi, > > Ramanujan supposedly discovered that the number, 163, has this interesting property that exp(sqrt(163)*pi), which is obviously a transcendental number, is real close to an integer (close to 10^(-12)). > > If I compute this using the Wolfram alpha engine, I get: > 262537412640768743.99999999999925007259719818568887935385... > > When I do this in R 3.1.1 (64-bit windows), I get: > 262537412640768256.0000 > > The absolute error between the exact and R's value is 488, with a relative error of about 1.9x10^(-15). > > In order to replicate Wolfram Alpha, I tried doing this in "Rmfpr" but I am unable to get accurate results: > > library(Rmpfr) > > >> exp(sqrt(163) * mpfr(pi, 120)) > > 1 'mpfr' number of precision 120 bits > > [1] 262537412640767837.08771354274620169031 > > The above answer is not only inaccurate, but it is actually worse than the answer using the usual double precision. Any thoughts as to what I am doing wrong? > > Thank you, > Ravi > > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.
Jeff Newmiller
2015-Jul-02 17:28 UTC
[R] Ramanujan and the accuracy of floating point computations - using Rmpfr in R
I don't know much about Rmpfr, but it doesn't look like your "pi" or "sqrt" or "exp" are being handled by that package, so I am not really seeing why your result should be more accurate when you have loaded that package. --------------------------------------------------------------------------- Jeff Newmiller The ..... ..... Go Live... DCN:<jdnewmil at dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go... Live: OO#.. Dead: OO#.. Playing Research Engineer (Solar/Batteries O.O#. #.O#. with /Software/Embedded Controllers) .OO#. .OO#. rocks...1k --------------------------------------------------------------------------- Sent from my phone. Please excuse my brevity. On July 2, 2015 7:28:19 AM PDT, Ravi Varadhan <ravi.varadhan at jhu.edu> wrote:>Hi, > >Ramanujan supposedly discovered that the number, 163, has this >interesting property that exp(sqrt(163)*pi), which is obviously a >transcendental number, is real close to an integer (close to 10^(-12)). > >If I compute this using the Wolfram alpha engine, I get: >262537412640768743.99999999999925007259719818568887935385... > >When I do this in R 3.1.1 (64-bit windows), I get: >262537412640768256.0000 > >The absolute error between the exact and R's value is 488, with a >relative error of about 1.9x10^(-15). > >In order to replicate Wolfram Alpha, I tried doing this in "Rmfpr" but >I am unable to get accurate results: > >library(Rmpfr) > > >> exp(sqrt(163) * mpfr(pi, 120)) > >1 'mpfr' number of precision 120 bits > >[1] 262537412640767837.08771354274620169031 > >The above answer is not only inaccurate, but it is actually worse than >the answer using the usual double precision. Any thoughts as to what I >am doing wrong? > >Thank you, >Ravi > > > > [[alternative HTML version deleted]] > >______________________________________________ >R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >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.