\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|x\right|\right)}^{3} \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 r257800 = 1.0;
double r257801 = atan2(1.0, 0.0);
double r257802 = sqrt(r257801);
double r257803 = r257800 / r257802;
double r257804 = 2.0;
double r257805 = x;
double r257806 = fabs(r257805);
double r257807 = r257804 * r257806;
double r257808 = 3.0;
double r257809 = r257804 / r257808;
double r257810 = r257806 * r257806;
double r257811 = r257810 * r257806;
double r257812 = r257809 * r257811;
double r257813 = r257807 + r257812;
double r257814 = 5.0;
double r257815 = r257800 / r257814;
double r257816 = r257811 * r257806;
double r257817 = r257816 * r257806;
double r257818 = r257815 * r257817;
double r257819 = r257813 + r257818;
double r257820 = 21.0;
double r257821 = r257800 / r257820;
double r257822 = r257817 * r257806;
double r257823 = r257822 * r257806;
double r257824 = r257821 * r257823;
double r257825 = r257819 + r257824;
double r257826 = r257803 * r257825;
double r257827 = fabs(r257826);
return r257827;
}
double f(double x) {
double r257828 = 1.0;
double r257829 = atan2(1.0, 0.0);
double r257830 = sqrt(r257829);
double r257831 = r257828 / r257830;
double r257832 = 2.0;
double r257833 = x;
double r257834 = fabs(r257833);
double r257835 = r257832 * r257834;
double r257836 = 3.0;
double r257837 = r257832 / r257836;
double r257838 = r257834 * r257834;
double r257839 = r257838 * r257834;
double r257840 = r257837 * r257839;
double r257841 = r257835 + r257840;
double r257842 = 5.0;
double r257843 = r257828 / r257842;
double r257844 = r257839 * r257834;
double r257845 = r257844 * r257834;
double r257846 = r257843 * r257845;
double r257847 = r257841 + r257846;
double r257848 = 21.0;
double r257849 = r257828 / r257848;
double r257850 = 3.0;
double r257851 = pow(r257834, r257850);
double r257852 = r257851 * r257834;
double r257853 = r257852 * r257834;
double r257854 = r257853 * r257834;
double r257855 = r257854 * r257834;
double r257856 = r257849 * r257855;
double r257857 = r257847 + r257856;
double r257858 = r257831 * r257857;
double r257859 = fabs(r257858);
return r257859;
}



Bits error versus x
Results
Initial program 0.2
rmApplied pow10.2
Applied pow10.2
Applied pow10.2
Applied pow-prod-up0.2
Applied pow-prod-up0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020056
(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)))))))