> -----Original Message----- > From: r-help-boun...@r-project.org > [mailto:r-help-boun...@r-project.org] On Behalf Of kayj > Sent: Monday, January 25, 2010 8:04 AM > To: r-help@r-project.org > Subject: Re: [R] problem with the precision of numbers > > > Hi All, > > thank you all for your help. I have tried Bill's script and > it works! so I > am trying to think what was the problem and it looks like it i sthe > precision. so you defined a function of the precision and evaluates at > precision=500. Bill, I was wondering how did you choose 500? is it > arbitrary?
The problem was that you were computing several quantities in the machine's native double precision format, not using the mpfr format. I chose to parameterize the function with precision so you could see how the precision affected the result. I showed precision=500 mainly because that is what you used for the variables that you did use in mpfr format. I did not do any analysis to see what precision would be needed to get a given final precision, but that would be possible. Here is how precision affects the results: > f <- function (precision){ require(Rmpfr) s <- mpfr(0, precision) j <- mpfr(-1, precision) c <- mpfr(1, precision) for (i in 0:80) { i <- mpfr(i, precision) s <- s + ((j^i) * c * (1 - (i + 1) * 1/200)^200) c <- (c * (80 - i))/(i + 1) } s } > p<-2^(1:10) # choose 10 values for precision > z<-lapply(p, f) # evaluate f at those 10 values > invisible(lapply(z,print,digits=20)) # print(z, digits=20) doesn't work. 1 'mpfr' number of precision 2 bits [1] 7.2535549176877750482e24 1 'mpfr' number of precision 4 bits [1] 1099511627776 1 'mpfr' number of precision 8 bits [1] -99090432 1 'mpfr' number of precision 16 bits [1] 1815744 1 'mpfr' number of precision 32 bits [1] 40.655612170696258545 1 'mpfr' number of precision 64 bits [1] 3.3910635476710543806e-9 1 'mpfr' number of precision 128 bits [1] 6.6568524698115877284e-20 1 'mpfr' number of precision 256 bits [1] 6.6568524789662037700e-20 1 'mpfr' number of precision 512 bits [1] 6.6568524789662037700e-20 1 'mpfr' number of precision 1024 bits [1] 6.6568524789662037700e-20 Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > > I have looked at the Rmpfr documentation and they defined the > mfr object to > be > Usage > mpfr(x, precBits, base = 10) > Const(name = c("pi", "gamma", "catalan"), prec = 120L) > > so is the precision defined in Bill's script the same as precBits? > > my bc package works , I have used bc ( from run "raw" and not > from R) so is > it possible to use it from R? > > thanks again for your help > > > -- > View this message in context: > http://n4.nabble.com/problem-with-the-precision-of-numbers-tp1 288905p1289483.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help@r-project.org mailing list > 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 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.