209 static const double a[] = {
210 -3.969683028665376E+01, 2.209460984245205E+02, -2.759285104469687E+02,
211 1.383577518672690E+02, -3.066479806614716E+01, 2.506628277459239
213 static const double b[] = {
214 -5.447609879822406E+01, 1.615858368580409E+02, -1.556989798598866E+02,
215 6.680131188771972E+01, -1.328068155288572E+01
217 static const double c[] = {
218 -7.784894002430293E-03, -3.223964580411365E-01, -2.400758277161838,
219 -2.549732539343734, 4.374664141464968, 2.938163982698783
221 static const double d[] = {
222 7.784695709041462E-03, 3.224671290700398E-01, 2.445134137142996, 3.754408661907416
227 double q=sqrt(-2.0 * log(x));
228 y = (((((c[0]*q + c[1])*q + c[2])*q + c[3])*q + c[4])*q + c[5])
229 / ((((d[0]*q + d[1])*q + d[2])*q + d[3])*q + 1.0);
230 }
else if(x<=0.97575) {
233 y = (((((a[0]*r + a[1])*r + a[2])*r + a[3])*r + a[4])*r + a[5])*q
234 / (((((b[0]*r + b[1])*r + b[2])*r + b[3])*r + b[4])*r + 1.0);
236 double q=sqrt(-2.0 * log(1.0-x));
237 y = -(((((c[0]*q + c[1])*q + c[2])*q + c[3])*q + c[4])*q + c[5])
238 / ((((d[0]*q + d[1])*q + d[2])*q + d[3])*q + 1.0);
240 e=0.5*erfc(-y/M_SQRT2)-x;
241 u=(e)*M_SQRT2*M_PI*exp(0.5*y*y);
242 y-=u/(1.0 + 0.5*y*u);
243 return(fabs(y/M_SQRT2));
int mean(double *x, double *y, int nr, double *xmean, double *xsd, double *ymean, double *ysd)