From: | "Dann Corbit" <DCorbit(at)connx(dot)com> |
---|---|
To: | "Cui Shijun" <rancpine(at)gmail(dot)com> |
Cc: | <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Issues with factorial operator |
Date: | 2007-06-09 09:38:05 |
Message-ID: | D425483C2C5C9F49B5B7A41F89441547010006FE@postal.corporate.connx.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
> -----Original Message-----
[snip]
> Hum... I think there is a little improvement: when n is too large,(say
> n>10, 000) we can use Stirling's formula to get the estimated value of
> n! :-)
Or (rather) the log base 10 of Stirling's formula. The n! estimator
will overflow for sure, unless we take the log of it.
Rather than all that, why not just figure out what the largest number of
digits we will allow is and then don't allow inputs that will generate
more than that.
The program I gave could be run with the target accuracy as the break
out of the loop and then the test would be:
<type> factorial(<type> n)
{
if (n > CONSTANT_PRECOMPUTED_LIMIT)
return NULL;
else
{
return compute_actual_factorial(n);
}
}
From | Date | Subject | |
---|---|---|---|
Next Message | Markus Schiltknecht | 2007-06-09 10:08:59 | Re: COPYable logs status |
Previous Message | Cui Shijun | 2007-06-09 09:11:40 | Re: Issues with factorial operator |