If I may add:
# maths grad student programmer
def factorial( n): return double_factorial[n]
double_factorial = ( 1.0000000000000000000000000e+00, 1.0000000000000000000000000e+00, 2.0000000000000000000000000e+00, 6.0000000000000000000000000e+00, 2.4000000000000000000000000e+01, 1.2000000000000000000000000e+02, 7.2000000000000000000000000e+02, 5.0400000000000000000000000e+03, 4.0320000000000000000000000e+04, 3.6288000000000000000000000e+05, 3.6288000000000000000000000e+06, 3.9916800000000000000000000e+07, 4.7900160000000000000000000e+08, 6.2270208000000000000000000e+09, 8.7178291200000000000000000e+10, 1.3076743680000000000000000e+12, 2.0922789888000000000000000e+13, 3.5568742809600000000000000e+14, 6.4023737057280000000000000e+15, 1.2164510040883200000000000e+17, 2.4329020081766400000000000e+18, 5.1090942171709440000000000e+19, 1.1240007277776076800000000e+21, 2.5852016738884978212864000e+22, 6.2044840173323940999987200e+23, 1.5511210043330986055303168e+25, 4.0329146112660565032278426e+26, 1.0888869450418351940239884e+28, 3.0488834461171387191890280e+29, 8.8417619937397018986200884e+30, 2.6525285981219106821760172e+32, 8.2228386541779224301985099e+33, 2.6313083693369351776635232e+35, 8.6833176188118859387156739e+36, 2.9523279903960415733408153e+38, 1.0333147966386145431134990e+40, 3.7199332678990125486367275e+41, 1.3763753091226345578872115e+43, 5.2302261746660111714185989e+44, 2.0397882081197444123129673e+46, 8.1591528324789768379554852e+47, 3.3452526613163807956284472e+49, 1.4050061177528799549331353e+51, 6.0415263063373834074440829e+52, 2.6582715747884488694165799e+54, 1.1962222086548018857499272e+56, 5.5026221598120891535672379e+57, 2.5862324151116817767349101e+59, 1.2413915592536072528327568e+61, 6.0828186403426752248860161e+62, 3.0414093201713375576366966e+64, 1.5511187532873821894707546e+66, 8.0658175170943876845634592e+67, 4.2748832840600254847912548e+69, 2.3084369733924137924371884e+71, 1.2696403353658276446882824e+73, 7.1099858780486348102543814e+74, 4.0526919504877214099803980e+76, 2.3505613312828784949216570e+78, 1.3868311854568983860514827e+80, 8.3209871127413898950597294e+81, 5.0758021387722483583354016e+83, 3.1469973260387939390320343e+85, 1.9826083154044400849657328e+87, 1.2688693218588416543780690e+89, 8.2476505920824715167353803e+90, 5.4434493907744306944549606e+92, 3.6471110918188683221214362e+94, 2.4800355424368305479709012e+96, 1.7112245242814129737573543e+98, 1.1978571669969892212594747e+100, 8.5047858856786230047017360e+101, 6.1234458376886084639206026e+103, 4.4701154615126843855485063e+105, 3.3078854415193862416022970e+107, 2.4809140811395399745349034e+109, 1.8854947016660503806465265e+111, 1.4518309202828587210082630e+113, 1.1324281178206296793535919e+115, 8.9461821307829757136262888e+116, 7.1569457046263805709010310e+118, 5.7971260207473678413578236e+120, 4.7536433370128420198081801e+122, 3.9455239697206587883704426e+124, 3.3142401345653531943477652e+126, 2.8171041143805501310238342e+128, 2.4227095383672734128129665e+130, 2.1077572983795278543715285e+132, 1.8548264225739843605432413e+134, 1.6507955160908460243967687e+136, 1.4857159644817615149180874e+138, 1.3520015276784029157751425e+140, 1.2438414054641308178973935e+142, 1.1567725070816415658755923e+144, 1.0873661566567430753888939e+146, 1.0329978488239059304919922e+148, 9.9167793487094964784489225e+149, 9.6192759682482120383696575e+151, 9.4268904488832479836729778e+153, 9.3326215443944153252083631e+155, 9.3326215443944150965646705e+157, 9.4259477598383598816354915e+159, 9.6144667150351270792682013e+161, 9.9029007164861804720832422e+163, 1.0299016745145628100140398e+166, 1.0813967582402909767018666e+168, 1.1462805637347083682649390e+170, 1.2265202031961380049931548e+172, 1.3246418194518290179334166e+174, 1.4438595832024936624984529e+176, 1.5882455415227430287482981e+178, 1.7629525510902445873527557e+180, 1.9745068572210740115452900e+182, 2.2311927486598137657245442e+184, 2.5435597334721876551863561e+186, 2.9250936934930159966911857e+188, 3.3931086844518980862340126e+190, 3.9699371608087210616475630e+192, 4.6845258497542909236586970e+194, 5.5745857612076058231040010e+196, 6.6895029134491271205092994e+198, 8.0942985252734440920080086e+200, 9.8750442008336010580046092e+202, 1.2146304367025329301345669e+205, 1.5061417415111409313880481e+207, 1.8826771768889261129076032e+209, 2.3721732428800468511642451e+211, 3.0126600184576594308995034e+213, 3.8562048236258040715513644e+215, 4.9745042224772874589728998e+217, 6.4668554892204741473620343e+219, 8.4715806908788206313986139e+221, 1.1182486511960043297656814e+224, 1.4872707060906857133840633e+226, 1.9929427461615187928130140e+228, 2.6904727073180504073289257e+230, 3.6590428819525488642227787e+232, 5.0128887482749919605321636e+234, 6.9177864726194885807727806e+236, 9.6157231969410893531952817e+238, 1.3462012475717525742234420e+241, 1.8981437590761708897983991e+243, 2.6953641378881628530300954e+245, 3.8543707171800730787494170e+247, 5.5502938327393044385098973e+249, 8.0479260574719917061017006e+251, 1.1749972043909107097291042e+254, 1.7272458904546389230256097e+256, 2.5563239178728653927014406e+258, 3.8089226376305697893300731e+260, 5.7133839564458546839951097e+262, 8.6272097742332399855113439e+264, 1.3113358856834524491588203e+267, 2.0063439050956822953263537e+269, 3.0897696138473507758593174e+271, 4.7891429014633940779577834e+273, 7.4710629262828942234753358e+275, 1.1729568794264144742677105e+278, 1.8532718694937349890004525e+280, 2.9467022724950384027683772e+282, 4.7147236359920616095214446e+284, 7.5907050539472189932190766e+286, 1.2296942187394494177325029e+289, 2.0044015765453026266402837e+291, 3.2872185855342959088410496e+293, 5.4239106661315886750266820e+295, 9.0036917057784375454334676e+297, 1.5036165148649991455999665e+300, 2.5260757449731984218543205e+302, 4.2690680090047051083347677e+304, 7.2574156153079990350004096e+306 )