\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|x\right| \cdot \left(\frac{{\left(\left|x\right|\right)}^{4} \cdot 1}{5} + \frac{{\left(\left|x\right|\right)}^{6} \cdot 1}{21}\right) + \left(2 \cdot \left|x\right| + \frac{2}{3} \cdot {\left(\left|x\right|\right)}^{3}\right)\right)\right|double f(double x) {
double r135988 = 1.0;
double r135989 = atan2(1.0, 0.0);
double r135990 = sqrt(r135989);
double r135991 = r135988 / r135990;
double r135992 = 2.0;
double r135993 = x;
double r135994 = fabs(r135993);
double r135995 = r135992 * r135994;
double r135996 = 3.0;
double r135997 = r135992 / r135996;
double r135998 = r135994 * r135994;
double r135999 = r135998 * r135994;
double r136000 = r135997 * r135999;
double r136001 = r135995 + r136000;
double r136002 = 5.0;
double r136003 = r135988 / r136002;
double r136004 = r135999 * r135994;
double r136005 = r136004 * r135994;
double r136006 = r136003 * r136005;
double r136007 = r136001 + r136006;
double r136008 = 21.0;
double r136009 = r135988 / r136008;
double r136010 = r136005 * r135994;
double r136011 = r136010 * r135994;
double r136012 = r136009 * r136011;
double r136013 = r136007 + r136012;
double r136014 = r135991 * r136013;
double r136015 = fabs(r136014);
return r136015;
}
double f(double x) {
double r136016 = 1.0;
double r136017 = atan2(1.0, 0.0);
double r136018 = sqrt(r136017);
double r136019 = r136016 / r136018;
double r136020 = x;
double r136021 = fabs(r136020);
double r136022 = 4.0;
double r136023 = pow(r136021, r136022);
double r136024 = r136023 * r136016;
double r136025 = 5.0;
double r136026 = r136024 / r136025;
double r136027 = 6.0;
double r136028 = pow(r136021, r136027);
double r136029 = r136028 * r136016;
double r136030 = 21.0;
double r136031 = r136029 / r136030;
double r136032 = r136026 + r136031;
double r136033 = r136021 * r136032;
double r136034 = 2.0;
double r136035 = r136034 * r136021;
double r136036 = 3.0;
double r136037 = r136034 / r136036;
double r136038 = 3.0;
double r136039 = pow(r136021, r136038);
double r136040 = r136037 * r136039;
double r136041 = r136035 + r136040;
double r136042 = r136033 + r136041;
double r136043 = r136019 * r136042;
double r136044 = fabs(r136043);
return r136044;
}



Bits error versus x
Results
Initial program 0.2
Simplified0.2
rmApplied associate-*r/0.1
Final simplification0.1
herbie shell --seed 2020047
(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)))))))