using static System.Math; public static partial class math{ public static double erf(double x){ /* single precision error function (Abramowitz and Stegun) */ if(x<0) return -erf(-x); double[] a = {0.254829592,-0.284496736,1.421413741,-1.453152027,1.061405429}; double t=1/(1+0.3275911*x); double sum=t*(a[0]+t*(a[1]+t*(a[2]+t*(a[3]+t*a[4])))); return 1.0-sum*Exp(-x*x); }//erf 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 */ double a=1.0/12, b=1.0/12; double lngamma=x*Log(x)-x+0.5*Log(2*PI/x)+a/(x+1)+b/(x+1)/(x+2); return Exp(lngamma); }//gamma }//math