1: string factorial(int n)
   2:      {
3: var ex = 0.0;
4: var x = (double)n;
   5:          x = x + x + 1;
   6:   
7: if (x > 1)
   8:          {
   9:              x = (Math.log(2.0 * Math.Pi) + Math.log(x / 2.0) * x - x
  10:                - (1.0 - 7.0 / (30.0 * x * x)) / (6.0 * x)) / 2.0;
  11:              x = x / Math.log(10);
  12:              ex = Math.floor(x);
  13:              x = Math.pow(10, x - ex);
  14:          }
  15:   
16: var res = x.toString();
17: return res.substring(0, 6) + " E " + ex.toString();
  18:      }
  19:   
20: void calc()
  21:      {
  22:          Console.writeLine(factorial(134217728));
  23:      }
Clearly, this method has it's limitations, but it is amazingly powerful. The charm of the formula lies in the small integer coefficients: 2,1,7,30,6,2. Therefore it is also well suited for the use with a pocket calculator. (The order of the formula is O(n-5).) Some obsolete browsers may use a float instead of a double and run into floating point trouble.
Our small calculator computes 134217728! ~ 8.3459 E 1032606161 using this formula. A better approximation is
8.34597925944327661772882039785919428429176258950852382 E 1032606161.
This approximation can for example be calculated as described in this section
'
A higher precision approximation'.
 Back to the calculator.
 
Back to the calculator. 
Go to the RetroFactorial page to see how your parents calculated the factorial. 
 
 Back to the Homepage of Factorial Algorithms.
Back to the Homepage of Factorial Algorithms.