\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|1 \cdot \left(\mathsf{fma}\left(0.6666666666666666296592325124947819858789, {\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(0.2000000000000000111022302462515654042363, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(2, \left|x\right|, 0.04761904761904761640423089374962728470564 \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right) \cdot \sqrt{\frac{1}{\pi}}\right)\right|double f(double x) {
double r51690 = 1.0;
double r51691 = atan2(1.0, 0.0);
double r51692 = sqrt(r51691);
double r51693 = r51690 / r51692;
double r51694 = 2.0;
double r51695 = x;
double r51696 = fabs(r51695);
double r51697 = r51694 * r51696;
double r51698 = 3.0;
double r51699 = r51694 / r51698;
double r51700 = r51696 * r51696;
double r51701 = r51700 * r51696;
double r51702 = r51699 * r51701;
double r51703 = r51697 + r51702;
double r51704 = 5.0;
double r51705 = r51690 / r51704;
double r51706 = r51701 * r51696;
double r51707 = r51706 * r51696;
double r51708 = r51705 * r51707;
double r51709 = r51703 + r51708;
double r51710 = 21.0;
double r51711 = r51690 / r51710;
double r51712 = r51707 * r51696;
double r51713 = r51712 * r51696;
double r51714 = r51711 * r51713;
double r51715 = r51709 + r51714;
double r51716 = r51693 * r51715;
double r51717 = fabs(r51716);
return r51717;
}
double f(double x) {
double r51718 = 1.0;
double r51719 = 0.6666666666666666;
double r51720 = x;
double r51721 = fabs(r51720);
double r51722 = 3.0;
double r51723 = pow(r51721, r51722);
double r51724 = 0.2;
double r51725 = 5.0;
double r51726 = pow(r51721, r51725);
double r51727 = 2.0;
double r51728 = 0.047619047619047616;
double r51729 = 7.0;
double r51730 = pow(r51721, r51729);
double r51731 = r51728 * r51730;
double r51732 = fma(r51727, r51721, r51731);
double r51733 = fma(r51724, r51726, r51732);
double r51734 = fma(r51719, r51723, r51733);
double r51735 = 1.0;
double r51736 = atan2(1.0, 0.0);
double r51737 = r51735 / r51736;
double r51738 = sqrt(r51737);
double r51739 = r51734 * r51738;
double r51740 = r51718 * r51739;
double r51741 = fabs(r51740);
return r51741;
}



Bits error versus x
Initial program 0.2
Taylor expanded around 0 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019315 +o rules:numerics
(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)))))))