[R] help

Waclaw Kusnierczyk waku at idi.ntnu.no
Wed Feb 2 05:22:16 CET 2011


On 02/01/2011 05:12 PM, David Winsemius wrote:
>
> On Feb 1, 2011, at 3:51 PM, Kiogou Lydie wrote:
>
>> Yet, j! will stop at 170 and Π (i-1-d) at 172; so, a[j] will
>> not exceed 170.
>>
>> I would like to have at least 200 a[j].
>
> > factorial(200)
> [1] Inf
> Warning message:
> In factorial(200) : value out of range in 'gammafn'

This is quite a nice number with 375 digits.  You can compute it 
'within' R with a call to, e.g., the arbitrary precision calculator bc, 
using the r-bc package [1] by Gabor Grothendieck:

library(bc)
factorial = function(n) bc(sprintf('
     define factorial(n) {
         if (n < 2) return (1)
         f = 2
         i = 2
         while (i < n) f *= ++i
         return (f) }
     factorial(%d)', n))

f200 = factorial(200)
f2000 = factorial(2000)
f20000 = factorial(20000)
...

The outcome is an object of the class 'bc', and you can (carefully) 
perform computations with it (with bc doing the job behind the scenes, 
as R cannot store integers of this magnitude).

vQ

[1] http://code.google.com/p/r-bc/



More information about the R-help mailing list