Range of Factorial Function

R

Rushi

Hi,

For some analysis I am doing, I tried the following LOG(FACT(229)), and it
returned NUM!. I am wondering if 229 is too big a number to compute a
Factorial of ? If so, is there an upper limit (something like FACT function
can be applied for numbers <= 150) for the FACT function ?

Thanks in anticipation,

Rushi Patel
 
I

Ian

A little experimantation reveals that FACT(170) is the largest possible,
returning a value of 7.2574E+306.
 
D

Dana DeLouis

Hi. 229! has 443 digits in it, so it's too big for both the worksheet and
vba. (27! being the max in Vba)
Here's just one workaround:

Function LogFactorial(n) As Double
Dim ans As Double
Dim j As Long
For j = 1 To n
ans = ans + Log(j)
Next j
LogFactorial = ans
End Function

Test:
? LogFactorial(229)
1018.95850224969

Which checks with another program:

Log[229!]
1018.9585022496902

HTH ;>)
 
T

TomHinkle

Ian's experimentation is consistant with the range of a double precision
floating point numer (what excel uses for calculating values)

lol.. sounds like you need a cray!!

Double Data Type


Double (double-precision floating-point) variables are stored as IEEE 64-bit
(8-byte) floating-point numbers ranging in value from -1.79769313486231E308
to -4.94065645841247E-324 for negative values and from 4.94065645841247E-324
to 1.79769313486232E308 for positive values. The type-declaration character
for Double is the number sign (#).
 
D

Dana DeLouis

Oops. Didn't even think of this:

=GAMMALN(229+1)

1018.95850224964

HTH :>)
--
Dana DeLouis
Win XP & Office 2003


Dana DeLouis said:
Hi. 229! has 443 digits in it, so it's too big for both the worksheet and
vba. (27! being the max in Vba)
Here's just one workaround:

Function LogFactorial(n) As Double
Dim ans As Double
Dim j As Long
For j = 1 To n
ans = ans + Log(j)
Next j
LogFactorial = ans
End Function

Test:
? LogFactorial(229)
1018.95850224969

Which checks with another program:

Log[229!]
1018.9585022496902

HTH ;>)
--
Dana DeLouis
Win XP & Office 2003


Rushi said:
Hi,

For some analysis I am doing, I tried the following LOG(FACT(229)), and
it
returned NUM!. I am wondering if 229 is too big a number to compute a
Factorial of ? If so, is there an upper limit (something like FACT
function
can be applied for numbers <= 150) for the FACT function ?

Thanks in anticipation,

Rushi Patel
 
J

Jay

For some analysis I am doing, I tried the following LOG(FACT(229)),
and it returned NUM!. I am wondering if 229 is too big a number to
compute a Factorial of ? If so, is there an upper limit (something
like FACT function can be applied for numbers <= 150) for the FACT
function ?


Recall that LOG(A*B) = LOG(A) + LOG(B)

So LOG(FACT(229)) = LOG(1)+LOG(2)+...+LOG(229)

In A1:A229, put
=LOG(ROW())

Then in B2 put
=SUM(A:A)
 
D

Dana DeLouis

A 1-Cell entry along this same theme might be something like this:

=SUMPRODUCT(LOG(ROW(INDIRECT("1:229"))))
 
Top