#define pi 3.1415926535897932384626 double gamma(double z) { double ret = 0.0; ret = (1.000000000190015 + 76.18009172947146/(z+1) + -86.50532032941677/(z+2) + 24.01409824083091/(z+3) + -1.231739572450155/(z+4) + 1.208650973866179e-3/(z+5) + -5.395239384953e-6/(z+6))*(sqrt(2*pi)/z)* pow(z+5.5, z+.5) //(z+5.5)^(z+.5) *exp(-(z+5.5)); return ret; } static int ni[] = { 0, 1, 2, 3, 4, 5, 6,100 }; static double nx[] = { 0.1, 1.2, 2.5, 3.4, 4.0001, 5.99999999, 6.2222222, 3.5555, 5 }; void main() { double n = 5; double ret = 0; for (int i=0; i < sizeof(ni) / sizeof(ni[0]); ++i) { n = ni[i]; ret = gamma(n + 1); printf("%g! :%.20g /n", n, ret); //cout << n <<"! :" << ret << endl; } for (int i=0; i < sizeof(nx) / sizeof(nx[0]); ++i) { n = nx[i]; ret = gamma(n + 1); printf("%g! :%.20g /n", n, ret); } for (int i=0; i < sizeof(nx) / sizeof(nx[0]); ++i) { n = -nx[i]; ret = gamma(n + 1); printf("%g! :%.20g /n", n, ret); } }