\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.66666666666666663 \cdot {\left(\left|x\right|\right)}^{3} + \left(0.20000000000000001 \cdot {\left(\left|x\right|\right)}^{5} + \left(2 \cdot \left|x\right| + {\left(\left|x\right|\right)}^{7} \cdot 0.047619047619047616\right)\right)\right)\right)\right|double f(double x) {
double r145417 = 1.0;
double r145418 = atan2(1.0, 0.0);
double r145419 = sqrt(r145418);
double r145420 = r145417 / r145419;
double r145421 = 2.0;
double r145422 = x;
double r145423 = fabs(r145422);
double r145424 = r145421 * r145423;
double r145425 = 3.0;
double r145426 = r145421 / r145425;
double r145427 = r145423 * r145423;
double r145428 = r145427 * r145423;
double r145429 = r145426 * r145428;
double r145430 = r145424 + r145429;
double r145431 = 5.0;
double r145432 = r145417 / r145431;
double r145433 = r145428 * r145423;
double r145434 = r145433 * r145423;
double r145435 = r145432 * r145434;
double r145436 = r145430 + r145435;
double r145437 = 21.0;
double r145438 = r145417 / r145437;
double r145439 = r145434 * r145423;
double r145440 = r145439 * r145423;
double r145441 = r145438 * r145440;
double r145442 = r145436 + r145441;
double r145443 = r145420 * r145442;
double r145444 = fabs(r145443);
return r145444;
}
double f(double x) {
double r145445 = 1.0;
double r145446 = 1.0;
double r145447 = atan2(1.0, 0.0);
double r145448 = r145446 / r145447;
double r145449 = sqrt(r145448);
double r145450 = 0.6666666666666666;
double r145451 = x;
double r145452 = fabs(r145451);
double r145453 = 3.0;
double r145454 = pow(r145452, r145453);
double r145455 = r145450 * r145454;
double r145456 = 0.2;
double r145457 = 5.0;
double r145458 = pow(r145452, r145457);
double r145459 = r145456 * r145458;
double r145460 = 2.0;
double r145461 = r145460 * r145452;
double r145462 = 7.0;
double r145463 = pow(r145452, r145462);
double r145464 = 0.047619047619047616;
double r145465 = r145463 * r145464;
double r145466 = r145461 + r145465;
double r145467 = r145459 + r145466;
double r145468 = r145455 + r145467;
double r145469 = r145449 * r145468;
double r145470 = r145445 * r145469;
double r145471 = fabs(r145470);
return r145471;
}



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