\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 \mathsf{fma}\left(\left|x\right|, \mathsf{fma}\left({\left(\left|x\right|\right)}^{4}, \frac{1}{5}, {\left(\left|x\right|\right)}^{6} \cdot \frac{1}{21}\right), \mathsf{fma}\left(2, \left|x\right|, {\left(\left|x\right|\right)}^{3} \cdot \frac{2}{3}\right)\right)\right|double f(double x) {
double r106583 = 1.0;
double r106584 = atan2(1.0, 0.0);
double r106585 = sqrt(r106584);
double r106586 = r106583 / r106585;
double r106587 = 2.0;
double r106588 = x;
double r106589 = fabs(r106588);
double r106590 = r106587 * r106589;
double r106591 = 3.0;
double r106592 = r106587 / r106591;
double r106593 = r106589 * r106589;
double r106594 = r106593 * r106589;
double r106595 = r106592 * r106594;
double r106596 = r106590 + r106595;
double r106597 = 5.0;
double r106598 = r106583 / r106597;
double r106599 = r106594 * r106589;
double r106600 = r106599 * r106589;
double r106601 = r106598 * r106600;
double r106602 = r106596 + r106601;
double r106603 = 21.0;
double r106604 = r106583 / r106603;
double r106605 = r106600 * r106589;
double r106606 = r106605 * r106589;
double r106607 = r106604 * r106606;
double r106608 = r106602 + r106607;
double r106609 = r106586 * r106608;
double r106610 = fabs(r106609);
return r106610;
}
double f(double x) {
double r106611 = 1.0;
double r106612 = atan2(1.0, 0.0);
double r106613 = sqrt(r106612);
double r106614 = r106611 / r106613;
double r106615 = x;
double r106616 = fabs(r106615);
double r106617 = 4.0;
double r106618 = pow(r106616, r106617);
double r106619 = 5.0;
double r106620 = r106611 / r106619;
double r106621 = 6.0;
double r106622 = pow(r106616, r106621);
double r106623 = 21.0;
double r106624 = r106611 / r106623;
double r106625 = r106622 * r106624;
double r106626 = fma(r106618, r106620, r106625);
double r106627 = 2.0;
double r106628 = 3.0;
double r106629 = pow(r106616, r106628);
double r106630 = 3.0;
double r106631 = r106627 / r106630;
double r106632 = r106629 * r106631;
double r106633 = fma(r106627, r106616, r106632);
double r106634 = fma(r106616, r106626, r106633);
double r106635 = r106614 * r106634;
double r106636 = fabs(r106635);
return r106636;
}



Bits error versus x
Initial program 0.2
rmApplied pow10.2
Applied pow10.2
Applied pow10.2
Applied pow-prod-down0.2
Applied pow-prod-down0.2
Simplified0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019198 +o rules:numerics
(FPCore (x)
:name "Jmat.Real.erfi, branch x less than or equal to 0.5"
(fabs (* (/ 1.0 (sqrt PI)) (+ (+ (+ (* 2.0 (fabs x)) (* (/ 2.0 3.0) (* (* (fabs x) (fabs x)) (fabs x)))) (* (/ 1.0 5.0) (* (* (* (* (fabs x) (fabs x)) (fabs x)) (fabs x)) (fabs x)))) (* (/ 1.0 21.0) (* (* (* (* (* (* (fabs x) (fabs x)) (fabs x)) (fabs x)) (fabs x)) (fabs x)) (fabs x)))))))