\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|\left(\left(\frac{1}{5} \cdot \left(\left|x\right| \cdot \left(\left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right) + \left(\left|x\right| \cdot 2 + \left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \frac{2}{3}\right)\right) + \frac{1}{21} \cdot \left(\left|x\right| \cdot \left(\left|x\right| \cdot \left(\left(\left|x\right| \cdot {\left(\left|x\right|\right)}^{3}\right) \cdot \left|x\right|\right)\right)\right)\right) \cdot \frac{1}{\sqrt{\pi}}\right|double f(double x) {
double r14069702 = 1.0;
double r14069703 = atan2(1.0, 0.0);
double r14069704 = sqrt(r14069703);
double r14069705 = r14069702 / r14069704;
double r14069706 = 2.0;
double r14069707 = x;
double r14069708 = fabs(r14069707);
double r14069709 = r14069706 * r14069708;
double r14069710 = 3.0;
double r14069711 = r14069706 / r14069710;
double r14069712 = r14069708 * r14069708;
double r14069713 = r14069712 * r14069708;
double r14069714 = r14069711 * r14069713;
double r14069715 = r14069709 + r14069714;
double r14069716 = 5.0;
double r14069717 = r14069702 / r14069716;
double r14069718 = r14069713 * r14069708;
double r14069719 = r14069718 * r14069708;
double r14069720 = r14069717 * r14069719;
double r14069721 = r14069715 + r14069720;
double r14069722 = 21.0;
double r14069723 = r14069702 / r14069722;
double r14069724 = r14069719 * r14069708;
double r14069725 = r14069724 * r14069708;
double r14069726 = r14069723 * r14069725;
double r14069727 = r14069721 + r14069726;
double r14069728 = r14069705 * r14069727;
double r14069729 = fabs(r14069728);
return r14069729;
}
double f(double x) {
double r14069730 = 0.2;
double r14069731 = x;
double r14069732 = fabs(r14069731);
double r14069733 = r14069732 * r14069732;
double r14069734 = r14069733 * r14069732;
double r14069735 = r14069734 * r14069732;
double r14069736 = r14069732 * r14069735;
double r14069737 = r14069730 * r14069736;
double r14069738 = 2.0;
double r14069739 = r14069732 * r14069738;
double r14069740 = 0.6666666666666666;
double r14069741 = r14069734 * r14069740;
double r14069742 = r14069739 + r14069741;
double r14069743 = r14069737 + r14069742;
double r14069744 = 0.047619047619047616;
double r14069745 = 3.0;
double r14069746 = pow(r14069732, r14069745);
double r14069747 = r14069732 * r14069746;
double r14069748 = r14069747 * r14069732;
double r14069749 = r14069732 * r14069748;
double r14069750 = r14069732 * r14069749;
double r14069751 = r14069744 * r14069750;
double r14069752 = r14069743 + r14069751;
double r14069753 = 1.0;
double r14069754 = atan2(1.0, 0.0);
double r14069755 = sqrt(r14069754);
double r14069756 = r14069753 / r14069755;
double r14069757 = r14069752 * r14069756;
double r14069758 = fabs(r14069757);
return r14069758;
}



Bits error versus x
Results
Initial program 0.2
rmApplied pow10.2
Applied pow20.2
Applied pow-prod-up0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019124 +o rules:numerics
(FPCore (x)
:name "Jmat.Real.erfi, branch x less than or equal to 0.5"
(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)))))))