private static double ad_normal(double x, double n)
{
x = (1 + 0.75 / n + 2.25 / (n * n)) * x;
if (x >= 0.00 && x < 0.200)
return 1 - Math.Exp(-13.436 + 101.14 * x - 223.73 * x * x);
else if (x >= 0.200 && x < 0.340)
return 1 - Math.Exp(-8.318 + 42.796 * x - 59.938 * x * x);
else if (x >= 0.340 && x < 0.600)
return Math.Exp(0.9177 - 4.279 * x - 1.38 * x * x);
else if (x >= 0.600 && x <= 13)
return Math.Exp(1.2937 - 5.709 * x + 0.0186 * x * x);
return Double.NaN;
}