| 1 | 
gezelter | 
1719 | 
/*************************************************************************** | 
| 2 | 
  | 
  | 
 *   This program is free software; you can redistribute it and/or modify  * | 
| 3 | 
  | 
  | 
 *   it under the terms of the GNU General Public License as published by  * | 
| 4 | 
  | 
  | 
 *   the Free Software Foundation; either version 3 of the License, or     * | 
| 5 | 
  | 
  | 
 *   (at your option) any later version.                                   * | 
| 6 | 
  | 
  | 
 *                                                                         * | 
| 7 | 
  | 
  | 
 *   This program is distributed in the hope that it will be useful,       * | 
| 8 | 
  | 
  | 
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        * | 
| 9 | 
  | 
  | 
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         * | 
| 10 | 
  | 
  | 
 *   GNU General Public License for more details.                          * | 
| 11 | 
  | 
  | 
 *                                                                         * | 
| 12 | 
  | 
  | 
 *   You should have received a copy of the GNU General Public License     * | 
| 13 | 
  | 
  | 
 *   along with this program; if not, see <http://www.gnu.org/licenses/>.  * | 
| 14 | 
  | 
  | 
 ***************************************************************************/ | 
| 15 | 
  | 
  | 
#include "config.h" | 
| 16 | 
  | 
  | 
const int maxFact = 151; // Largest factorial computed | 
| 17 | 
  | 
  | 
const RealType fact[maxFact] = | 
| 18 | 
  | 
  | 
  { | 
| 19 | 
  | 
  | 
    1.0, | 
| 20 | 
  | 
  | 
    1.0, | 
| 21 | 
  | 
  | 
    2.0, | 
| 22 | 
  | 
  | 
    6.0, | 
| 23 | 
  | 
  | 
    24.0, | 
| 24 | 
  | 
  | 
    120.0, | 
| 25 | 
  | 
  | 
    720.0, | 
| 26 | 
  | 
  | 
    5040.0, | 
| 27 | 
  | 
  | 
    40320.0, | 
| 28 | 
  | 
  | 
    362880.0, | 
| 29 | 
  | 
  | 
    3628800.0, | 
| 30 | 
  | 
  | 
    39916800.0, | 
| 31 | 
  | 
  | 
    479001600.0, | 
| 32 | 
  | 
  | 
    6227020800.0, | 
| 33 | 
  | 
  | 
    87178291200.0, | 
| 34 | 
  | 
  | 
    1307674368000.0, | 
| 35 | 
  | 
  | 
    20922789888000.0, | 
| 36 | 
  | 
  | 
    355687428096000.0, | 
| 37 | 
  | 
  | 
    6402373705728000.0, | 
| 38 | 
  | 
  | 
    1.21645100408832e17, | 
| 39 | 
  | 
  | 
    2.43290200817664e18, | 
| 40 | 
  | 
  | 
    5.109094217170944e19, | 
| 41 | 
  | 
  | 
    1.1240007277776077e21, | 
| 42 | 
  | 
  | 
    2.5852016738884978e22, | 
| 43 | 
  | 
  | 
    6.2044840173323941e23, | 
| 44 | 
  | 
  | 
    1.5511210043330986e25, | 
| 45 | 
  | 
  | 
    4.0329146112660565e26, | 
| 46 | 
  | 
  | 
    1.0888869450418352e28, | 
| 47 | 
  | 
  | 
    3.0488834461171384e29, | 
| 48 | 
  | 
  | 
    8.8417619937397008e30, | 
| 49 | 
  | 
  | 
    2.6525285981219103e32, | 
| 50 | 
  | 
  | 
    8.2228386541779224e33, | 
| 51 | 
  | 
  | 
    2.6313083693369352e35, | 
| 52 | 
  | 
  | 
    8.6833176188118859e36, | 
| 53 | 
  | 
  | 
    2.9523279903960412e38, | 
| 54 | 
  | 
  | 
    1.0333147966386144e40, | 
| 55 | 
  | 
  | 
    3.7199332678990118e41, | 
| 56 | 
  | 
  | 
    1.3763753091226343e43, | 
| 57 | 
  | 
  | 
    5.2302261746660104e44, | 
| 58 | 
  | 
  | 
    2.0397882081197442e46, | 
| 59 | 
  | 
  | 
    8.1591528324789768e47, | 
| 60 | 
  | 
  | 
    3.3452526613163803e49, | 
| 61 | 
  | 
  | 
    1.4050061177528798e51, | 
| 62 | 
  | 
  | 
    6.0415263063373834e52, | 
| 63 | 
  | 
  | 
    2.6582715747884485e54, | 
| 64 | 
  | 
  | 
    1.1962222086548019e56, | 
| 65 | 
  | 
  | 
    5.5026221598120885e57, | 
| 66 | 
  | 
  | 
    2.5862324151116818e59, | 
| 67 | 
  | 
  | 
    1.2413915592536073e61, | 
| 68 | 
  | 
  | 
    6.0828186403426752e62, | 
| 69 | 
  | 
  | 
    3.0414093201713376e64, | 
| 70 | 
  | 
  | 
    1.5511187532873822e66, | 
| 71 | 
  | 
  | 
    8.0658175170943877e67, | 
| 72 | 
  | 
  | 
    4.2748832840600255e69, | 
| 73 | 
  | 
  | 
    2.3084369733924138e71, | 
| 74 | 
  | 
  | 
    1.2696403353658276e73, | 
| 75 | 
  | 
  | 
    7.1099858780486348e74, | 
| 76 | 
  | 
  | 
    4.0526919504877221e76, | 
| 77 | 
  | 
  | 
    2.3505613312828789e78, | 
| 78 | 
  | 
  | 
    1.3868311854568986e80, | 
| 79 | 
  | 
  | 
    8.3209871127413916e81, | 
| 80 | 
  | 
  | 
    5.0758021387722484e83, | 
| 81 | 
  | 
  | 
    3.1469973260387939e85, | 
| 82 | 
  | 
  | 
    1.9826083154044401e87, | 
| 83 | 
  | 
  | 
    1.2688693218588417e89, | 
| 84 | 
  | 
  | 
    8.2476505920824715e90, | 
| 85 | 
  | 
  | 
    5.4434493907744307e92, | 
| 86 | 
  | 
  | 
    3.6471110918188683e94, | 
| 87 | 
  | 
  | 
    2.4800355424368305e96, | 
| 88 | 
  | 
  | 
    1.711224524281413e98, | 
| 89 | 
  | 
  | 
    1.197857166996989e100, | 
| 90 | 
  | 
  | 
    8.5047858856786218e101, | 
| 91 | 
  | 
  | 
    6.1234458376886077e103, | 
| 92 | 
  | 
  | 
    4.4701154615126834e105, | 
| 93 | 
  | 
  | 
    3.3078854415193856e107, | 
| 94 | 
  | 
  | 
    2.4809140811395391e109, | 
| 95 | 
  | 
  | 
    1.8854947016660498e111, | 
| 96 | 
  | 
  | 
    1.4518309202828584e113, | 
| 97 | 
  | 
  | 
    1.1324281178206295e115, | 
| 98 | 
  | 
  | 
    8.9461821307829729e116, | 
| 99 | 
  | 
  | 
    7.1569457046263779e118, | 
| 100 | 
  | 
  | 
    5.7971260207473655e120, | 
| 101 | 
  | 
  | 
    4.7536433370128398e122, | 
| 102 | 
  | 
  | 
    3.9455239697206569e124, | 
| 103 | 
  | 
  | 
    3.314240134565352e126, | 
| 104 | 
  | 
  | 
    2.8171041143805494e128, | 
| 105 | 
  | 
  | 
    2.4227095383672724e130, | 
| 106 | 
  | 
  | 
    2.1077572983795269e132, | 
| 107 | 
  | 
  | 
    1.8548264225739836e134, | 
| 108 | 
  | 
  | 
    1.6507955160908452e136, | 
| 109 | 
  | 
  | 
    1.4857159644817607e138, | 
| 110 | 
  | 
  | 
    1.3520015276784023e140, | 
| 111 | 
  | 
  | 
    1.24384140546413e142, | 
| 112 | 
  | 
  | 
    1.1567725070816409e144, | 
| 113 | 
  | 
  | 
    1.0873661566567424e146, | 
| 114 | 
  | 
  | 
    1.0329978488239052e148, | 
| 115 | 
  | 
  | 
    9.916779348709491e149, | 
| 116 | 
  | 
  | 
    9.6192759682482062e151, | 
| 117 | 
  | 
  | 
    9.426890448883242e153, | 
| 118 | 
  | 
  | 
    9.3326215443944096e155, | 
| 119 | 
  | 
  | 
    9.3326215443944102e157, | 
| 120 | 
  | 
  | 
    9.4259477598383536e159, | 
| 121 | 
  | 
  | 
    9.6144667150351211e161, | 
| 122 | 
  | 
  | 
    9.9029007164861754e163, | 
| 123 | 
  | 
  | 
    1.0299016745145622e166, | 
| 124 | 
  | 
  | 
    1.0813967582402903e168, | 
| 125 | 
  | 
  | 
    1.1462805637347078e170, | 
| 126 | 
  | 
  | 
    1.2265202031961373e172, | 
| 127 | 
  | 
  | 
    1.3246418194518284e174, | 
| 128 | 
  | 
  | 
    1.4438595832024928e176, | 
| 129 | 
  | 
  | 
    1.5882455415227421e178, | 
| 130 | 
  | 
  | 
    1.7629525510902437e180, | 
| 131 | 
  | 
  | 
    1.9745068572210728e182, | 
| 132 | 
  | 
  | 
    2.2311927486598123e184, | 
| 133 | 
  | 
  | 
    2.5435597334721862e186, | 
| 134 | 
  | 
  | 
    2.9250936934930141e188, | 
| 135 | 
  | 
  | 
    3.3931086844518965e190, | 
| 136 | 
  | 
  | 
    3.969937160808719e192, | 
| 137 | 
  | 
  | 
    4.6845258497542883e194, | 
| 138 | 
  | 
  | 
    5.5745857612076033e196, | 
| 139 | 
  | 
  | 
    6.6895029134491239e198, | 
| 140 | 
  | 
  | 
    8.09429852527344e200, | 
| 141 | 
  | 
  | 
    9.8750442008335976e202, | 
| 142 | 
  | 
  | 
    1.2146304367025325e205, | 
| 143 | 
  | 
  | 
    1.5061417415111404e207, | 
| 144 | 
  | 
  | 
    1.8826771768889254e209, | 
| 145 | 
  | 
  | 
    2.3721732428800459e211, | 
| 146 | 
  | 
  | 
    3.0126600184576582e213, | 
| 147 | 
  | 
  | 
    3.8562048236258025e215, | 
| 148 | 
  | 
  | 
    4.9745042224772855e217, | 
| 149 | 
  | 
  | 
    6.4668554892204716e219, | 
| 150 | 
  | 
  | 
    8.4715806908788174e221, | 
| 151 | 
  | 
  | 
    1.1182486511960039e224, | 
| 152 | 
  | 
  | 
    1.4872707060906852e226, | 
| 153 | 
  | 
  | 
    1.9929427461615181e228, | 
| 154 | 
  | 
  | 
    2.6904727073180495e230, | 
| 155 | 
  | 
  | 
    3.6590428819525472e232, | 
| 156 | 
  | 
  | 
    5.0128887482749898e234, | 
| 157 | 
  | 
  | 
    6.9177864726194859e236, | 
| 158 | 
  | 
  | 
    9.6157231969410859e238, | 
| 159 | 
  | 
  | 
    1.346201247571752e241, | 
| 160 | 
  | 
  | 
    1.8981437590761701e243, | 
| 161 | 
  | 
  | 
    2.6953641378881614e245, | 
| 162 | 
  | 
  | 
    3.8543707171800706e247, | 
| 163 | 
  | 
  | 
    5.5502938327393013e249, | 
| 164 | 
  | 
  | 
    8.0479260574719866e251, | 
| 165 | 
  | 
  | 
    1.1749972043909099e254, | 
| 166 | 
  | 
  | 
    1.7272458904546376e256, | 
| 167 | 
  | 
  | 
    2.5563239178728637e258, | 
| 168 | 
  | 
  | 
    3.8089226376305671e260, | 
| 169 | 
  | 
  | 
    5.7133839564458505e262 | 
| 170 | 
  | 
  | 
  };  //  array of precomputed factorials |