\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|1 \cdot \left(\sqrt{\frac{1}{\pi}} \cdot \left(0.6666666666666666296592325124947819858789 \cdot {\left(\left|x\right|\right)}^{3} + \left(0.2000000000000000111022302462515654042363 \cdot {\left(\left|x\right|\right)}^{5} + \left(2 \cdot \left|x\right| + 0.04761904761904761640423089374962728470564 \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right)\right)\right|double f(double x) {
double r143278 = 1.0;
double r143279 = atan2(1.0, 0.0);
double r143280 = sqrt(r143279);
double r143281 = r143278 / r143280;
double r143282 = 2.0;
double r143283 = x;
double r143284 = fabs(r143283);
double r143285 = r143282 * r143284;
double r143286 = 3.0;
double r143287 = r143282 / r143286;
double r143288 = r143284 * r143284;
double r143289 = r143288 * r143284;
double r143290 = r143287 * r143289;
double r143291 = r143285 + r143290;
double r143292 = 5.0;
double r143293 = r143278 / r143292;
double r143294 = r143289 * r143284;
double r143295 = r143294 * r143284;
double r143296 = r143293 * r143295;
double r143297 = r143291 + r143296;
double r143298 = 21.0;
double r143299 = r143278 / r143298;
double r143300 = r143295 * r143284;
double r143301 = r143300 * r143284;
double r143302 = r143299 * r143301;
double r143303 = r143297 + r143302;
double r143304 = r143281 * r143303;
double r143305 = fabs(r143304);
return r143305;
}
double f(double x) {
double r143306 = 1.0;
double r143307 = 1.0;
double r143308 = atan2(1.0, 0.0);
double r143309 = r143307 / r143308;
double r143310 = sqrt(r143309);
double r143311 = 0.6666666666666666;
double r143312 = x;
double r143313 = fabs(r143312);
double r143314 = 3.0;
double r143315 = pow(r143313, r143314);
double r143316 = r143311 * r143315;
double r143317 = 0.2;
double r143318 = 5.0;
double r143319 = pow(r143313, r143318);
double r143320 = r143317 * r143319;
double r143321 = 2.0;
double r143322 = r143321 * r143313;
double r143323 = 0.047619047619047616;
double r143324 = 7.0;
double r143325 = pow(r143313, r143324);
double r143326 = r143323 * r143325;
double r143327 = r143322 + r143326;
double r143328 = r143320 + r143327;
double r143329 = r143316 + r143328;
double r143330 = r143310 * r143329;
double r143331 = r143306 * r143330;
double r143332 = fabs(r143331);
return r143332;
}



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