\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 r158497 = 1.0;
double r158498 = atan2(1.0, 0.0);
double r158499 = sqrt(r158498);
double r158500 = r158497 / r158499;
double r158501 = 2.0;
double r158502 = x;
double r158503 = fabs(r158502);
double r158504 = r158501 * r158503;
double r158505 = 3.0;
double r158506 = r158501 / r158505;
double r158507 = r158503 * r158503;
double r158508 = r158507 * r158503;
double r158509 = r158506 * r158508;
double r158510 = r158504 + r158509;
double r158511 = 5.0;
double r158512 = r158497 / r158511;
double r158513 = r158508 * r158503;
double r158514 = r158513 * r158503;
double r158515 = r158512 * r158514;
double r158516 = r158510 + r158515;
double r158517 = 21.0;
double r158518 = r158497 / r158517;
double r158519 = r158514 * r158503;
double r158520 = r158519 * r158503;
double r158521 = r158518 * r158520;
double r158522 = r158516 + r158521;
double r158523 = r158500 * r158522;
double r158524 = fabs(r158523);
return r158524;
}
double f(double x) {
double r158525 = 1.0;
double r158526 = atan2(1.0, 0.0);
double r158527 = sqrt(r158526);
double r158528 = r158525 / r158527;
double r158529 = 2.0;
double r158530 = x;
double r158531 = fabs(r158530);
double r158532 = r158529 * r158531;
double r158533 = 3.0;
double r158534 = r158529 / r158533;
double r158535 = r158531 * r158531;
double r158536 = r158535 * r158531;
double r158537 = r158534 * r158536;
double r158538 = r158532 + r158537;
double r158539 = 5.0;
double r158540 = r158525 / r158539;
double r158541 = r158536 * r158531;
double r158542 = r158541 * r158531;
double r158543 = r158540 * r158542;
double r158544 = r158538 + r158543;
double r158545 = 21.0;
double r158546 = r158525 / r158545;
double r158547 = r158542 * r158531;
double r158548 = r158547 * r158531;
double r158549 = r158546 * r158548;
double r158550 = r158544 + r158549;
double r158551 = r158528 * r158550;
double r158552 = fabs(r158551);
return r158552;
}



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