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
_}
}
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).
+ 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"