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.