[R] problem with the precision of numbers
(Ted Harding)
Ted.Harding at manchester.ac.uk
Tue Jan 19 20:25:25 CET 2010
On 19-Jan-10 18:48:47, Gabor Grothendieck wrote:
> On Tue, Jan 19, 2010 at 1:41 PM, Ted Harding
> <Ted.Harding at manchester.ac.uk> wrote:
>> On 19-Jan-10 17:55:43, Ben Bolker wrote:
>>> kayj <kjaja27 <at> yahoo.com> writes:
>>>> Hi All,
>>>>
>>>> I was wodering if it is possible to increase the precision using R.
>>>> I ran the script below in R and MAPLE and I got different results
>>>> when k is large.
>>>> Any idea how to fix this problem? thanks for your help
>>>>
>>>> for (k in 0:2000){
>>>> _s=0
>>>> _for(i in 0:k){
>>>> _s=s+((-1)^i)*3456*(1+i*1/2000)^3000
>>>> _}
>>>> }
>>>
>>> (1) see
>>> http://wiki.r-project.org/rwiki/doku.php?id=misc:r_accuracy:high_preci
>>> si
>>> on_arithmetic
>>>
>>> (2) consider whether there is more accurate algorithm you
>>> could use. I don't recognize the series, but perhaps it
>>> has a closed form solution, maybe as a special function?
>>> How much accuracy do you really need in the solution?
>>>
>>> _ Ben Bolker
>>
>> I suspect this is an invented computation -- the "3456" strikes
>> me as "unlikely" (it reminds me of my habitual illustrative use
>> of set.seed(54321)).
>>
>> There is a definite problem with the development given by kayj.
>> When k=2000 and i=k, the formula requires evaluation of
>>
>> _3456*(2^3000)
>>
>> on a log10 scale this is
>>
>> _log10(3456) + 3000*log10(2) = 906.6286
>>
>> Since R "gives up" at 10^308.25471 = 1.79767e+308
>> (10^308.25472 => Inf), this algorithm is going to be tricky to
>> evaluate!
>>
>> I don't know how well Rmpfr copes with very large numbers (the
>> available documentation seems cryptic). However, I can go along
>> with the recommendation in the URL the Ben gives, to use 'bc'
>> ("Berkeley Calculator"), available on unix[oid] systems since
>> a long time ago. That is an old friend of mine, and works well
>> (it can cope with exponents up to X^2147483647 in the version
>> I have). It can eat for breakfast the task of checking whether
>> Kate Bush can accurately sing pi to 117 significant figures:
>>
>> _http://www.absolutelyrics.com/lyrics/view/kate_bush/pi
>>
>> (Try it in R).
>>
>
> There is an R interface to bc here at http://r-bc.googlecode.com .
>
> Trying it for k up to 10:
>
>> source("http://r-bc.googlecode.com/svn/trunk/R/bc.R")
>> bc("for (k = 0; k <= 10; k = k + 1) {
> + s=0
> + for (i = 0; i <= k; i = i + 1) {
> + s=s+((-1)^i)*3456*(1+i*1/2000)^3000
> + }
> + }
> + s
> + ")
> [1]
> "8886117368.307011957285621299007119650203018618933170114453054867257099
> 2204603757660023189324468582740298425344"
Excellent reource! Thanks for pointing it out, Gabor.
Now for Kate Bush.
First, KB:
==========
Sweet and gentle sensitive man
With an obsessive nature and deep fascination
For numbers
And a complete infatuation with the calculation
Of PI
Oh he love, he love, he love
He does love his numbers
And they run, they run, they run him
In a great big circle
In a circle of infinity
3.1415926535 897932
3846 264 338 3279
Oh he love, he love, he love
He does love his numbers
And they run, they run, they run him
In a great big circle
In a circle of infinity
But he must, he must, he must
Put a number to it
50288419 716939937510
582319749 44 59230781
6406286208 821 4808651 32
Oh he love, he love, he love
He does love his numbers
And they run, they run, they run him
In a great big circle
In a circle of infinity
82306647 0938446095 505 8223?
========================================
KB she say:
3.
14159 26535 89793 23846 20
26433 83279 50288 41971 40
69399 37510 582*31* 97494 60
45923 07816 40628 6208||8 80
21480 86513 28230 66470 100
93844 60955 05822 3 116+1 = 117
Next, bc:
========
source("http://r-bc.googlecode.com/svn/trunk/R/bc.R")
bc("scale=200
+ 4*a(1)
+ ")
[1]
"
3.
14159 26535 89793 23846
26433 83279 50288 41971
69399 37510 582*0*9 74944
59230 78164 06286 208|99
86280 34825 34211 70679
|82148 08651 32823 06647
09384 46095 50582 23
172
53594 08128 48111 74502
84102 70193 85211 05559
64462 29489 54930 38196
"
[edited for layout and indicators]
So KB replaces a "0" at decimal place 54 by "31",
and omits "99 86280 34825 34211 70679".
Maybe there were overwhelming poetic reasons for this.
Ted.
--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 19-Jan-10 Time: 19:25:20
------------------------------ XFMail ------------------------------
More information about the R-help
mailing list