\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|\sqrt{\frac{1}{\pi}} \cdot \left(\mathsf{fma}\left(0.6666666666666666296592325124947819858789, \left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|, \mathsf{fma}\left({\left(\left|x\right|\right)}^{5}, 0.2000000000000000111022302462515654042363, \mathsf{fma}\left(0.04761904761904761640423089374962728470564, {\left(\left|x\right|\right)}^{7}, \left|x\right| \cdot 2\right)\right)\right) \cdot 1\right)\right|double f(double x) {
double r5536828 = 1.0;
double r5536829 = atan2(1.0, 0.0);
double r5536830 = sqrt(r5536829);
double r5536831 = r5536828 / r5536830;
double r5536832 = 2.0;
double r5536833 = x;
double r5536834 = fabs(r5536833);
double r5536835 = r5536832 * r5536834;
double r5536836 = 3.0;
double r5536837 = r5536832 / r5536836;
double r5536838 = r5536834 * r5536834;
double r5536839 = r5536838 * r5536834;
double r5536840 = r5536837 * r5536839;
double r5536841 = r5536835 + r5536840;
double r5536842 = 5.0;
double r5536843 = r5536828 / r5536842;
double r5536844 = r5536839 * r5536834;
double r5536845 = r5536844 * r5536834;
double r5536846 = r5536843 * r5536845;
double r5536847 = r5536841 + r5536846;
double r5536848 = 21.0;
double r5536849 = r5536828 / r5536848;
double r5536850 = r5536845 * r5536834;
double r5536851 = r5536850 * r5536834;
double r5536852 = r5536849 * r5536851;
double r5536853 = r5536847 + r5536852;
double r5536854 = r5536831 * r5536853;
double r5536855 = fabs(r5536854);
return r5536855;
}
double f(double x) {
double r5536856 = 1.0;
double r5536857 = atan2(1.0, 0.0);
double r5536858 = r5536856 / r5536857;
double r5536859 = sqrt(r5536858);
double r5536860 = 0.6666666666666666;
double r5536861 = x;
double r5536862 = fabs(r5536861);
double r5536863 = r5536862 * r5536862;
double r5536864 = r5536863 * r5536862;
double r5536865 = 5.0;
double r5536866 = pow(r5536862, r5536865);
double r5536867 = 0.2;
double r5536868 = 0.047619047619047616;
double r5536869 = 7.0;
double r5536870 = pow(r5536862, r5536869);
double r5536871 = 2.0;
double r5536872 = r5536862 * r5536871;
double r5536873 = fma(r5536868, r5536870, r5536872);
double r5536874 = fma(r5536866, r5536867, r5536873);
double r5536875 = fma(r5536860, r5536864, r5536874);
double r5536876 = 1.0;
double r5536877 = r5536875 * r5536876;
double r5536878 = r5536859 * r5536877;
double r5536879 = fabs(r5536878);
return r5536879;
}



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