\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 r97538 = 1.0;
double r97539 = atan2(1.0, 0.0);
double r97540 = sqrt(r97539);
double r97541 = r97538 / r97540;
double r97542 = 2.0;
double r97543 = x;
double r97544 = fabs(r97543);
double r97545 = r97542 * r97544;
double r97546 = 3.0;
double r97547 = r97542 / r97546;
double r97548 = r97544 * r97544;
double r97549 = r97548 * r97544;
double r97550 = r97547 * r97549;
double r97551 = r97545 + r97550;
double r97552 = 5.0;
double r97553 = r97538 / r97552;
double r97554 = r97549 * r97544;
double r97555 = r97554 * r97544;
double r97556 = r97553 * r97555;
double r97557 = r97551 + r97556;
double r97558 = 21.0;
double r97559 = r97538 / r97558;
double r97560 = r97555 * r97544;
double r97561 = r97560 * r97544;
double r97562 = r97559 * r97561;
double r97563 = r97557 + r97562;
double r97564 = r97541 * r97563;
double r97565 = fabs(r97564);
return r97565;
}
double f(double x) {
double r97566 = 1.0;
double r97567 = atan2(1.0, 0.0);
double r97568 = sqrt(r97567);
double r97569 = r97566 / r97568;
double r97570 = 2.0;
double r97571 = x;
double r97572 = fabs(r97571);
double r97573 = r97570 * r97572;
double r97574 = 3.0;
double r97575 = r97570 / r97574;
double r97576 = r97572 * r97572;
double r97577 = r97576 * r97572;
double r97578 = r97575 * r97577;
double r97579 = r97573 + r97578;
double r97580 = 5.0;
double r97581 = r97566 / r97580;
double r97582 = r97577 * r97572;
double r97583 = r97582 * r97572;
double r97584 = r97581 * r97583;
double r97585 = r97579 + r97584;
double r97586 = 21.0;
double r97587 = r97566 / r97586;
double r97588 = r97583 * r97572;
double r97589 = r97588 * r97572;
double r97590 = r97587 * r97589;
double r97591 = r97585 + r97590;
double r97592 = r97569 * r97591;
double r97593 = fabs(r97592);
return r97593;
}



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