erf function

double erf(
  1. double x
)

Implementation

double erf(double x) {
  // Abramowitz and Stegun approximation 7.1.26
  double sign = x < 0 ? -1.0 : 1.0;
  x = x.abs();
  const a1 = 0.254829592;
  const a2 = -0.284496736;
  const a3 = 1.421413741;
  const a4 = -1.453152027;
  const a5 = 1.061405429;
  const p = 0.3275911;
  double t = 1.0 / (1.0 + p * x);
  double y = 1.0 -
      (((((a5 * t + a4) * t) + a3) * t + a2) * t + a1) * t * math.exp(-x * x);
  return sign * y;
}