private static double errfix(double n, double x)
{
// From: http://www.jstatsoft.org/v09/i02/paper, page 4
double cn = 0.01265 + 0.1757 / n;
if (x < cn)
return ((0.0037 / (n * n * n) + .00078 / (n * n) + 0.00006) / n) * g1(x / cn);
if (cn <= x && x < 0.8)
return (0.04213 / n + 0.01365 / (n * n)) * g2((x - cn) / (0.8 - cn));
// if (x > -0.8)
return g3(x) / n;
}