\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 r128578 = 1.0;
double r128579 = atan2(1.0, 0.0);
double r128580 = sqrt(r128579);
double r128581 = r128578 / r128580;
double r128582 = 2.0;
double r128583 = x;
double r128584 = fabs(r128583);
double r128585 = r128582 * r128584;
double r128586 = 3.0;
double r128587 = r128582 / r128586;
double r128588 = r128584 * r128584;
double r128589 = r128588 * r128584;
double r128590 = r128587 * r128589;
double r128591 = r128585 + r128590;
double r128592 = 5.0;
double r128593 = r128578 / r128592;
double r128594 = r128589 * r128584;
double r128595 = r128594 * r128584;
double r128596 = r128593 * r128595;
double r128597 = r128591 + r128596;
double r128598 = 21.0;
double r128599 = r128578 / r128598;
double r128600 = r128595 * r128584;
double r128601 = r128600 * r128584;
double r128602 = r128599 * r128601;
double r128603 = r128597 + r128602;
double r128604 = r128581 * r128603;
double r128605 = fabs(r128604);
return r128605;
}
double f(double x) {
double r128606 = 1.0;
double r128607 = atan2(1.0, 0.0);
double r128608 = sqrt(r128607);
double r128609 = r128606 / r128608;
double r128610 = 2.0;
double r128611 = x;
double r128612 = fabs(r128611);
double r128613 = r128610 * r128612;
double r128614 = 3.0;
double r128615 = r128610 / r128614;
double r128616 = r128612 * r128612;
double r128617 = r128616 * r128612;
double r128618 = r128615 * r128617;
double r128619 = r128613 + r128618;
double r128620 = 5.0;
double r128621 = r128606 / r128620;
double r128622 = r128617 * r128612;
double r128623 = r128622 * r128612;
double r128624 = r128621 * r128623;
double r128625 = r128619 + r128624;
double r128626 = 21.0;
double r128627 = r128606 / r128626;
double r128628 = r128623 * r128612;
double r128629 = r128628 * r128612;
double r128630 = r128627 * r128629;
double r128631 = r128625 + r128630;
double r128632 = r128609 * r128631;
double r128633 = fabs(r128632);
return r128633;
}



Bits error versus x
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2019323
(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)))))))