| Factorial Function | Old and New Standard Algorithms (no prime factorization) |
|---|---|
| Additive Moessner | Alfred Moessner's ingenious method uses only additions! Unfortunately, it is the slowest method. |
| Additive Swing | This method uses only addition and squaring! Based on the notion of the 'swing numbers'. See: Divide, Swing and Conquer the Factorial! |
| Naive Product | The 'obvious' method (or should I call it the ubiquitous stupid one?). |
| Recursive Product | The most simple not naive method to calculate the factorial. Models a complete binary tree. |
| Boiten Split | Discovered by Eerke Boiten by playing with transformational programming. See: Factorization of the factorial. |
| Recursive Split | Is related to the Boiten algorithm like the Recursive Product to the Naive Product. |
| Hyper | A beautiful simple algorithm based on a hypergeometric expansion of the factorial. See: Divide, Swing and Conquer the Factorial! |
| Hyper Double | A optimized variant of the Hyper Simple algorithm which uses additionally a symmetric relation between the coefficients. See: Divide, Swing and Conquer the Factorial! |
| Swing | A beautiful simple but powerful algorithm. See: Divide, Swing and Conquer the Factorial! |
| Swing Double | A optimized variant of the Simple Swing algorithm. See: Divide, Swing and Conquer the Factorial! |
| Swing Rational | A recursive variant of the Swing Double algorithm, which uses rational arithmetic. See: Divide, Swing and Conquer the Factorial! |
| Swing Rational Double | An attempt to optimize the Swing Rational algorithm. See: Divide, Swing and Conquer the Factorial! |
| Linear Difference | Based on the differences of the factorials. |
| Square Difference | Based on the differences of squares. |
| Recursive Square Difference |
Like the forgoing, but computed recursively. |
| Advanced Algorithms (based on prime factorization) |
|
| Prime Factorization Repeated Squaring |
An algorithm proposed by Peter Borwein. See: On the Complexity of Calculating Factorials. |
| Prime Factorization Nested Squaring |
An algorithm proposed by Arnold Schönhage et al.. See: Fast Algorithms, BI-Wiss.-Verl., 1994, page 225. |
| Prime Factorization Swing |
An algorithm proposed by Peter Luschny. See: Divide, Swing and Conquer the Factorial! (Write me to get the preprint.) |
| Prime Factorization Swing-List |
A variant of the foregoing algorithm (working directly with lists of prime factors). |
| Prime Factorization Swing-Cache |
A variant of the foregoing algorithm (caching primorials). |
| Prime Factorization Binomial |
A simplification of an algorithm given by Ilan Vardi's 'Comp. Recreations in Mathematica', chap. 4.3, based on P. Goetgheluck, Prime divisors of binomial coefficients, Math. Comp. 51, 1988, 325-329. |
| Prime Factorization Primorial Squaring |
An algorithm proposed by Bruce Leenstra. (Personal communication). |