\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(\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) + \frac{1}{21} \cdot \left(\left|x\right| \cdot \left(\left|x\right| \cdot \left(\left(\left|x\right| \cdot {\left(\left|x\right|\right)}^{3}\right) \cdot \left|x\right|\right)\right)\right)\right) \cdot \frac{1}{\sqrt{\pi}}\right|double f(double x) {
double r5841050 = 1.0;
double r5841051 = atan2(1.0, 0.0);
double r5841052 = sqrt(r5841051);
double r5841053 = r5841050 / r5841052;
double r5841054 = 2.0;
double r5841055 = x;
double r5841056 = fabs(r5841055);
double r5841057 = r5841054 * r5841056;
double r5841058 = 3.0;
double r5841059 = r5841054 / r5841058;
double r5841060 = r5841056 * r5841056;
double r5841061 = r5841060 * r5841056;
double r5841062 = r5841059 * r5841061;
double r5841063 = r5841057 + r5841062;
double r5841064 = 5.0;
double r5841065 = r5841050 / r5841064;
double r5841066 = r5841061 * r5841056;
double r5841067 = r5841066 * r5841056;
double r5841068 = r5841065 * r5841067;
double r5841069 = r5841063 + r5841068;
double r5841070 = 21.0;
double r5841071 = r5841050 / r5841070;
double r5841072 = r5841067 * r5841056;
double r5841073 = r5841072 * r5841056;
double r5841074 = r5841071 * r5841073;
double r5841075 = r5841069 + r5841074;
double r5841076 = r5841053 * r5841075;
double r5841077 = fabs(r5841076);
return r5841077;
}
double f(double x) {
double r5841078 = 0.2;
double r5841079 = x;
double r5841080 = fabs(r5841079);
double r5841081 = r5841080 * r5841080;
double r5841082 = r5841081 * r5841080;
double r5841083 = r5841082 * r5841080;
double r5841084 = r5841080 * r5841083;
double r5841085 = r5841078 * r5841084;
double r5841086 = 2.0;
double r5841087 = r5841080 * r5841086;
double r5841088 = 0.6666666666666666;
double r5841089 = r5841082 * r5841088;
double r5841090 = r5841087 + r5841089;
double r5841091 = r5841085 + r5841090;
double r5841092 = 0.047619047619047616;
double r5841093 = 3.0;
double r5841094 = pow(r5841080, r5841093);
double r5841095 = r5841080 * r5841094;
double r5841096 = r5841095 * r5841080;
double r5841097 = r5841080 * r5841096;
double r5841098 = r5841080 * r5841097;
double r5841099 = r5841092 * r5841098;
double r5841100 = r5841091 + r5841099;
double r5841101 = 1.0;
double r5841102 = atan2(1.0, 0.0);
double r5841103 = sqrt(r5841102);
double r5841104 = r5841101 / r5841103;
double r5841105 = r5841100 * r5841104;
double r5841106 = fabs(r5841105);
return r5841106;
}



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