#include "StatTools/Funct/Math.h" #include namespace Funct { double factorial( unsigned int n ) { if ( n <= 1 ) return 1; double x = 1; for ( unsigned int i = 2; i < n; i++ ) x *= i; return x; } #ifdef __STRICT_ANSI__ double erf( double x ) { static const double epsilon = 1.e-06; double sgn = 1; double fac = 1; double xx = x; int k = 1; double sum = 0; double delta = 100; for( int n = 0; fabs( delta ) > epsilon; n++ ) { delta = sgn * xx / fac / k; sum += delta; k += 2; sgn = - sgn; fac *= ( n + 1 ); xx *= ( x*x ); } return sum * M_2_SQRTPI; } #endif double erfi( double x ) { static const double epsilon = 1.e-06; double fac = 1; double xx = x; int k = 1; double sum = 0; double delta = 100; for( int n = 0; fabs( delta ) > epsilon; n++ ) { delta = xx / fac / k; sum += delta; k += 2; fac *= ( n + 1 ); xx *= ( x*x ); } return sum * M_2_SQRTPI; } }