\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(\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|double f(double x) {
double r179885 = 1.0;
double r179886 = atan2(1.0, 0.0);
double r179887 = sqrt(r179886);
double r179888 = r179885 / r179887;
double r179889 = 2.0;
double r179890 = x;
double r179891 = fabs(r179890);
double r179892 = r179889 * r179891;
double r179893 = 3.0;
double r179894 = r179889 / r179893;
double r179895 = r179891 * r179891;
double r179896 = r179895 * r179891;
double r179897 = r179894 * r179896;
double r179898 = r179892 + r179897;
double r179899 = 5.0;
double r179900 = r179885 / r179899;
double r179901 = r179896 * r179891;
double r179902 = r179901 * r179891;
double r179903 = r179900 * r179902;
double r179904 = r179898 + r179903;
double r179905 = 21.0;
double r179906 = r179885 / r179905;
double r179907 = r179902 * r179891;
double r179908 = r179907 * r179891;
double r179909 = r179906 * r179908;
double r179910 = r179904 + r179909;
double r179911 = r179888 * r179910;
double r179912 = fabs(r179911);
return r179912;
}
double f(double x) {
double r179913 = 1.0;
double r179914 = atan2(1.0, 0.0);
double r179915 = sqrt(r179914);
double r179916 = r179913 / r179915;
double r179917 = 2.0;
double r179918 = x;
double r179919 = fabs(r179918);
double r179920 = r179917 * r179919;
double r179921 = 3.0;
double r179922 = r179917 / r179921;
double r179923 = r179919 * r179919;
double r179924 = r179923 * r179919;
double r179925 = r179922 * r179924;
double r179926 = r179920 + r179925;
double r179927 = 5.0;
double r179928 = r179913 / r179927;
double r179929 = r179924 * r179919;
double r179930 = r179929 * r179919;
double r179931 = r179928 * r179930;
double r179932 = r179926 + r179931;
double r179933 = 21.0;
double r179934 = r179913 / r179933;
double r179935 = r179930 * r179919;
double r179936 = r179935 * r179919;
double r179937 = r179934 * r179936;
double r179938 = r179932 + r179937;
double r179939 = r179916 * r179938;
double r179940 = fabs(r179939);
return r179940;
}



Bits error versus x
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2019323 +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)))))))