\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(\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) + \left(\left|x\right| \cdot \left(\left|x\right| \cdot \left(\left|x\right| \cdot \left({\left(\left|x\right|\right)}^{3} \cdot \left|x\right|\right)\right)\right)\right) \cdot \frac{1}{21}\right)\right|double f(double x) {
double r5609861 = 1.0;
double r5609862 = atan2(1.0, 0.0);
double r5609863 = sqrt(r5609862);
double r5609864 = r5609861 / r5609863;
double r5609865 = 2.0;
double r5609866 = x;
double r5609867 = fabs(r5609866);
double r5609868 = r5609865 * r5609867;
double r5609869 = 3.0;
double r5609870 = r5609865 / r5609869;
double r5609871 = r5609867 * r5609867;
double r5609872 = r5609871 * r5609867;
double r5609873 = r5609870 * r5609872;
double r5609874 = r5609868 + r5609873;
double r5609875 = 5.0;
double r5609876 = r5609861 / r5609875;
double r5609877 = r5609872 * r5609867;
double r5609878 = r5609877 * r5609867;
double r5609879 = r5609876 * r5609878;
double r5609880 = r5609874 + r5609879;
double r5609881 = 21.0;
double r5609882 = r5609861 / r5609881;
double r5609883 = r5609878 * r5609867;
double r5609884 = r5609883 * r5609867;
double r5609885 = r5609882 * r5609884;
double r5609886 = r5609880 + r5609885;
double r5609887 = r5609864 * r5609886;
double r5609888 = fabs(r5609887);
return r5609888;
}
double f(double x) {
double r5609889 = 1.0;
double r5609890 = atan2(1.0, 0.0);
double r5609891 = sqrt(r5609890);
double r5609892 = r5609889 / r5609891;
double r5609893 = 5.0;
double r5609894 = r5609889 / r5609893;
double r5609895 = x;
double r5609896 = fabs(r5609895);
double r5609897 = r5609896 * r5609896;
double r5609898 = r5609897 * r5609896;
double r5609899 = r5609898 * r5609896;
double r5609900 = r5609896 * r5609899;
double r5609901 = r5609894 * r5609900;
double r5609902 = 2.0;
double r5609903 = r5609896 * r5609902;
double r5609904 = 3.0;
double r5609905 = r5609902 / r5609904;
double r5609906 = r5609898 * r5609905;
double r5609907 = r5609903 + r5609906;
double r5609908 = r5609901 + r5609907;
double r5609909 = 3.0;
double r5609910 = pow(r5609896, r5609909);
double r5609911 = r5609910 * r5609896;
double r5609912 = r5609896 * r5609911;
double r5609913 = r5609896 * r5609912;
double r5609914 = r5609896 * r5609913;
double r5609915 = 21.0;
double r5609916 = r5609889 / r5609915;
double r5609917 = r5609914 * r5609916;
double r5609918 = r5609908 + r5609917;
double r5609919 = r5609892 * r5609918;
double r5609920 = fabs(r5609919);
return r5609920;
}



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 2019170 +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)))))))