\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(1 \cdot \sqrt{\frac{1}{\pi}}\right) \cdot \mathsf{fma}\left(0.6666666666666666296592325124947819858789, {\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(0.2000000000000000111022302462515654042363, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(2, \left|x\right|, 0.04761904761904761640423089374962728470564 \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right)\right|double f(double x) {
double r89982 = 1.0;
double r89983 = atan2(1.0, 0.0);
double r89984 = sqrt(r89983);
double r89985 = r89982 / r89984;
double r89986 = 2.0;
double r89987 = x;
double r89988 = fabs(r89987);
double r89989 = r89986 * r89988;
double r89990 = 3.0;
double r89991 = r89986 / r89990;
double r89992 = r89988 * r89988;
double r89993 = r89992 * r89988;
double r89994 = r89991 * r89993;
double r89995 = r89989 + r89994;
double r89996 = 5.0;
double r89997 = r89982 / r89996;
double r89998 = r89993 * r89988;
double r89999 = r89998 * r89988;
double r90000 = r89997 * r89999;
double r90001 = r89995 + r90000;
double r90002 = 21.0;
double r90003 = r89982 / r90002;
double r90004 = r89999 * r89988;
double r90005 = r90004 * r89988;
double r90006 = r90003 * r90005;
double r90007 = r90001 + r90006;
double r90008 = r89985 * r90007;
double r90009 = fabs(r90008);
return r90009;
}
double f(double x) {
double r90010 = 1.0;
double r90011 = 1.0;
double r90012 = atan2(1.0, 0.0);
double r90013 = r90011 / r90012;
double r90014 = sqrt(r90013);
double r90015 = r90010 * r90014;
double r90016 = 0.6666666666666666;
double r90017 = x;
double r90018 = fabs(r90017);
double r90019 = 3.0;
double r90020 = pow(r90018, r90019);
double r90021 = 0.2;
double r90022 = 5.0;
double r90023 = pow(r90018, r90022);
double r90024 = 2.0;
double r90025 = 0.047619047619047616;
double r90026 = 7.0;
double r90027 = pow(r90018, r90026);
double r90028 = r90025 * r90027;
double r90029 = fma(r90024, r90018, r90028);
double r90030 = fma(r90021, r90023, r90029);
double r90031 = fma(r90016, r90020, r90030);
double r90032 = r90015 * r90031;
double r90033 = fabs(r90032);
return r90033;
}



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