You can do that with bc if you pass the entire expression to bc(...) in quotes but in that case you will have to use bc notation, not R notation so, for example, exp is e and atan is a.
> library(bc) > bc("e(sqrt(163)*4*a(1))") [1] "262537412640768743.9999999999992500725971981856888793538563373369908627075374103782106479101186073116295306145602054347" On Fri, Jul 3, 2015 at 3:01 PM, Ravi Varadhan <ravi.varad...@jhu.edu> wrote: > Thank you all. I did think about declaring `pi' as a special constant, > but for some reason didn't actually try it. > Would it be easy to have the mpfr() written such that its argument is > automatically of extended precision? In other words, if I just called: > mpfr(exp(sqrt(163)*pi, 120), then all the constants, 163, pi, are > automatically of 120 bits precision. > > Is this easy to do? > > Best, > Ravi > ________________________________________ > From: David Winsemius <dwinsem...@comcast.net> > Sent: Friday, July 3, 2015 2:06 PM > To: John Nash > Cc: r-help; Ravi Varadhan > Subject: Re: [R] : Ramanujan and the accuracy of floating point > computations - using Rmpfr in R > > > On Jul 3, 2015, at 8:08 AM, John Nash <john.n...@uottawa.ca> wrote: > > > > > > > > > > Third try -- I unsubscribed and re-subscribed. Sorry to Ravi for extra > > traffic. > > > > In case anyone gets a duplicate, R-help bounced my msg "from non-member" > (I changed server, but not email yesterday, > > so possibly something changed enough). Trying again. > > > > JN > > > > I got the Wolfram answer as follows: > > > > library(Rmpfr) > > n163 <- mpfr(163, 500) > > n163 > > pi500 <- mpfr(pi, 500) > > pi500 > > pitan <- mpfr(4, 500)*atan(mpfr(1,500)) > > pitan > > pitan-pi500 > > r500 <- exp(sqrt(n163)*pitan) > > r500 > > check <- "262537412640768743.99999999999925007259719818568887935385..." > > savehistory("jnramanujan.R") > > > > Note that I used 4*atan(1) to get pi. > > RK got it right by following the example in the help page for mpfr: > > Const("pi", 120) > > The R `pi` constant is not recognized by mpfr as being anything other than > another double . > > > There are four special values that mpfr recognizes. > > — > Best; > David > > > > It seems that may be important, > > rather than converting. > > > > JN > > > > On 15-07-03 06:00 AM, r-help-requ...@r-project.org wrote: > > > >> Message: 40 > >> Date: Thu, 2 Jul 2015 22:38:45 +0000 > >> From: Ravi Varadhan <ravi.varad...@jhu.edu> > >> To: "'Richard M. Heiberger'" <r...@temple.edu>, Aditya Singh > >> <aps...@yahoo.com> > >> Cc: r-help <r-help@r-project.org> > >> Subject: Re: [R] : Ramanujan and the accuracy of floating point > >> computations - using Rmpfr in R > >> Message-ID: > >> <14ad39aaf6a542849bbf3f62a0c2f...@dom-eb1-2013.win.ad.jhu.edu> > >> Content-Type: text/plain; charset="utf-8" > >> > >> Hi Rich, > >> > >> The Wolfram answer is correct. > >> http://mathworld.wolfram.com/RamanujanConstant.html > >> > >> There is no code for Wolfram alpha. You just go to their web engine > and plug in the expression and it will give you the answer. > >> http://www.wolframalpha.com/ > >> > >> I am not sure that the precedence matters in Rmpfr. Even if it does, > the answer you get is still wrong as you showed. > >> > >> Thanks, > >> Ravi > >> > >> -----Original Message----- > >> From: Richard M. Heiberger [mailto:r...@temple.edu] > >> Sent: Thursday, July 02, 2015 6:30 PM > >> To: Aditya Singh > >> Cc: Ravi Varadhan; r-help > >> Subject: Re: [R] : Ramanujan and the accuracy of floating point > computations - using Rmpfr in R > >> > >> There is a precedence error in your R attempt. You need to convert > >> 163 to 120 bits first, before taking > >> its square root. > >> > >>>> exp(sqrt(mpfr(163, 120)) * mpfr(pi, 120)) > >> 1 'mpfr' number of precision 120 bits > >> [1] 262537412640768333.51635812597335712954 > >> > >> ## just the last four characters to the left of the decimal point. > >>>> tmp <- c(baseR=8256, Wolfram=8744, Rmpfr=8333, wrongRmpfr=7837) > >>>> tmp-tmp[2] > >> baseR Wolfram Rmpfr wrongRmpfr > >> -488 0 -411 -907 > >> You didn't give the Wolfram alpha code you used. There is no way of > verifying the correct value from your email. > >> Please check that you didn't have a similar precedence error in that > code. > >> > >> Rich > >> > >> > >> On Thu, Jul 2, 2015 at 2:02 PM, Aditya Singh via R-help < > r-help@r-project.org> wrote: > >>>> Ravi > >>>> > >>>> I am a chemical engineer by training. Is there not something like law > of corresponding states in numerical analysis? > >>>> > >>>> Aditya > >>>> > >>>> > >>>> > >>>> ------------------------------ > >>>> On Thu 2 Jul, 2015 7:28 AM PDT Ravi Varadhan 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@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. > >>>> ______________________________________________ > >>>> R-help@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. > >> ------------------------------ > > > > > > ______________________________________________ > > R-help@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. > > David Winsemius, MD > Alameda, CA, USA > > > ______________________________________________ > R-help@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. > -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com [[alternative HTML version deleted]] ______________________________________________ R-help@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.