using static System.Math; public static partial class math{ /* public static double gamma(double x){ /// single precision gamma function (Wikipedia) if(x<0 )return PI/Sin(PI*x)/gamma(-x+1); if(x<10)return gamma(x+1)/x; // move argument up const double a=1.0/12, b=1.0/12, c=59.0/360, d=29.0/60; double lngamma=x*Log(x)-x+0.5*Log(2*PI/x) +(a+(b+(c+d/(x+4))/(x+3))/(x+2))/(x+1); return Exp(lngamma); } */ public static double gamma(double x){ /// single precision gamma function (Gergo Nemes, from Wikipedia) if(x<0)return PI/Sin(PI*x)/gamma(1-x); if(x<9)return gamma(x+1)/x; // move argument up double lngamma=x*Log(x+1/(12*x-1/x/10))-x+Log(2*PI/x)/2; return Exp(lngamma); } }//math