\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(\frac{1}{21} \cdot {\left(\left|x\right|\right)}^{7} + \left({\left(\left|x\right|\right)}^{5} \cdot \frac{1}{5} + \left(2 + \left(\left|x\right| \cdot \frac{2}{3}\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right) \cdot \sqrt{\frac{1}{\pi}}\right|double f(double x) {
double r6417893 = 1.0;
double r6417894 = atan2(1.0, 0.0);
double r6417895 = sqrt(r6417894);
double r6417896 = r6417893 / r6417895;
double r6417897 = 2.0;
double r6417898 = x;
double r6417899 = fabs(r6417898);
double r6417900 = r6417897 * r6417899;
double r6417901 = 3.0;
double r6417902 = r6417897 / r6417901;
double r6417903 = r6417899 * r6417899;
double r6417904 = r6417903 * r6417899;
double r6417905 = r6417902 * r6417904;
double r6417906 = r6417900 + r6417905;
double r6417907 = 5.0;
double r6417908 = r6417893 / r6417907;
double r6417909 = r6417904 * r6417899;
double r6417910 = r6417909 * r6417899;
double r6417911 = r6417908 * r6417910;
double r6417912 = r6417906 + r6417911;
double r6417913 = 21.0;
double r6417914 = r6417893 / r6417913;
double r6417915 = r6417910 * r6417899;
double r6417916 = r6417915 * r6417899;
double r6417917 = r6417914 * r6417916;
double r6417918 = r6417912 + r6417917;
double r6417919 = r6417896 * r6417918;
double r6417920 = fabs(r6417919);
return r6417920;
}
double f(double x) {
double r6417921 = 0.047619047619047616;
double r6417922 = x;
double r6417923 = fabs(r6417922);
double r6417924 = 7.0;
double r6417925 = pow(r6417923, r6417924);
double r6417926 = r6417921 * r6417925;
double r6417927 = 5.0;
double r6417928 = pow(r6417923, r6417927);
double r6417929 = 0.2;
double r6417930 = r6417928 * r6417929;
double r6417931 = 2.0;
double r6417932 = 0.6666666666666666;
double r6417933 = r6417923 * r6417932;
double r6417934 = r6417933 * r6417923;
double r6417935 = r6417931 + r6417934;
double r6417936 = r6417935 * r6417923;
double r6417937 = r6417930 + r6417936;
double r6417938 = r6417926 + r6417937;
double r6417939 = 1.0;
double r6417940 = atan2(1.0, 0.0);
double r6417941 = r6417939 / r6417940;
double r6417942 = sqrt(r6417941);
double r6417943 = r6417938 * r6417942;
double r6417944 = fabs(r6417943);
return r6417944;
}



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