\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) + \left(1 \cdot \frac{{\left(\left|x\right|\right)}^{6}}{21}\right) \cdot \left|x\right|\right)\right|double f(double x) {
double r185508 = 1.0;
double r185509 = atan2(1.0, 0.0);
double r185510 = sqrt(r185509);
double r185511 = r185508 / r185510;
double r185512 = 2.0;
double r185513 = x;
double r185514 = fabs(r185513);
double r185515 = r185512 * r185514;
double r185516 = 3.0;
double r185517 = r185512 / r185516;
double r185518 = r185514 * r185514;
double r185519 = r185518 * r185514;
double r185520 = r185517 * r185519;
double r185521 = r185515 + r185520;
double r185522 = 5.0;
double r185523 = r185508 / r185522;
double r185524 = r185519 * r185514;
double r185525 = r185524 * r185514;
double r185526 = r185523 * r185525;
double r185527 = r185521 + r185526;
double r185528 = 21.0;
double r185529 = r185508 / r185528;
double r185530 = r185525 * r185514;
double r185531 = r185530 * r185514;
double r185532 = r185529 * r185531;
double r185533 = r185527 + r185532;
double r185534 = r185511 * r185533;
double r185535 = fabs(r185534);
return r185535;
}
double f(double x) {
double r185536 = 1.0;
double r185537 = atan2(1.0, 0.0);
double r185538 = sqrt(r185537);
double r185539 = r185536 / r185538;
double r185540 = 2.0;
double r185541 = x;
double r185542 = fabs(r185541);
double r185543 = r185540 * r185542;
double r185544 = 3.0;
double r185545 = r185540 / r185544;
double r185546 = r185542 * r185542;
double r185547 = r185546 * r185542;
double r185548 = r185545 * r185547;
double r185549 = r185543 + r185548;
double r185550 = 5.0;
double r185551 = r185536 / r185550;
double r185552 = r185547 * r185542;
double r185553 = r185552 * r185542;
double r185554 = r185551 * r185553;
double r185555 = r185549 + r185554;
double r185556 = 6.0;
double r185557 = pow(r185542, r185556);
double r185558 = 21.0;
double r185559 = r185557 / r185558;
double r185560 = r185536 * r185559;
double r185561 = r185560 * r185542;
double r185562 = r185555 + r185561;
double r185563 = r185539 * r185562;
double r185564 = fabs(r185563);
return r185564;
}



Bits error versus x
Results
Initial program 0.2
rmApplied associate-*r*0.2
Simplified0.2
rmApplied div-inv0.2
Applied associate-*l*0.2
Simplified0.1
Final simplification0.1
herbie shell --seed 2020001
(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)))))))