\left|\frac{1}{\sqrt{\pi}} \cdot \left(\left(\left(2 \cdot \left|x\right| + \frac{2}{3} \cdot \left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right) + \frac{1}{5} \cdot \left(\left(\left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right) + \frac{1}{21} \cdot \left(\left(\left(\left(\left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right)\right|\left|\frac{1}{\sqrt{\pi}} \cdot \left(\left(\left(2 \cdot \left|x\right| + \frac{2}{3} \cdot \left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right) + \frac{1}{5} \cdot \left(\left(\left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right) + \frac{1}{21} \cdot \left(\left(\left(\left(\left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right)\right|double f(double x) {
double r118543 = 1.0;
double r118544 = atan2(1.0, 0.0);
double r118545 = sqrt(r118544);
double r118546 = r118543 / r118545;
double r118547 = 2.0;
double r118548 = x;
double r118549 = fabs(r118548);
double r118550 = r118547 * r118549;
double r118551 = 3.0;
double r118552 = r118547 / r118551;
double r118553 = r118549 * r118549;
double r118554 = r118553 * r118549;
double r118555 = r118552 * r118554;
double r118556 = r118550 + r118555;
double r118557 = 5.0;
double r118558 = r118543 / r118557;
double r118559 = r118554 * r118549;
double r118560 = r118559 * r118549;
double r118561 = r118558 * r118560;
double r118562 = r118556 + r118561;
double r118563 = 21.0;
double r118564 = r118543 / r118563;
double r118565 = r118560 * r118549;
double r118566 = r118565 * r118549;
double r118567 = r118564 * r118566;
double r118568 = r118562 + r118567;
double r118569 = r118546 * r118568;
double r118570 = fabs(r118569);
return r118570;
}
double f(double x) {
double r118571 = 1.0;
double r118572 = atan2(1.0, 0.0);
double r118573 = sqrt(r118572);
double r118574 = r118571 / r118573;
double r118575 = 2.0;
double r118576 = x;
double r118577 = fabs(r118576);
double r118578 = r118575 * r118577;
double r118579 = 3.0;
double r118580 = r118575 / r118579;
double r118581 = r118577 * r118577;
double r118582 = r118581 * r118577;
double r118583 = r118580 * r118582;
double r118584 = r118578 + r118583;
double r118585 = 5.0;
double r118586 = r118571 / r118585;
double r118587 = r118582 * r118577;
double r118588 = r118587 * r118577;
double r118589 = r118586 * r118588;
double r118590 = r118584 + r118589;
double r118591 = 21.0;
double r118592 = r118571 / r118591;
double r118593 = r118588 * r118577;
double r118594 = r118593 * r118577;
double r118595 = r118592 * r118594;
double r118596 = r118590 + r118595;
double r118597 = r118574 * r118596;
double r118598 = fabs(r118597);
return r118598;
}



Bits error versus x
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2019344 +o rules:numerics
(FPCore (x)
:name "Jmat.Real.erfi, branch x less than or equal to 0.5"
:precision binary64
(fabs (* (/ 1 (sqrt PI)) (+ (+ (+ (* 2 (fabs x)) (* (/ 2 3) (* (* (fabs x) (fabs x)) (fabs x)))) (* (/ 1 5) (* (* (* (* (fabs x) (fabs x)) (fabs x)) (fabs x)) (fabs x)))) (* (/ 1 21) (* (* (* (* (* (* (fabs x) (fabs x)) (fabs x)) (fabs x)) (fabs x)) (fabs x)) (fabs x)))))))