private static double adinf(double z)
{
// From: http://www.jstatsoft.org/v09/i02/paper, page 3
if (z < 2)
{
// |error| < 0.000002
double e = Math.Exp(-1.2337141 / z) / Math.Sqrt(z);
return e * (2.00012 + (0.247105 - (0.0649821 - (0.0347962 - (0.011672 - 0.00168691 * z) * z) * z) * z) * z);
}
else
{
// |error| < 0.0000008
double e = Math.Exp(1.0776 - (2.30695 - (0.43424 - (0.082433 - (0.008056 - 0.0003146 * z) * z) * z) * z) * z);
return Math.Exp(-e);
}
}