\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(\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) + \left(\left|x\right| \cdot \left(\left|x\right| \cdot \left(\left|x\right| \cdot \left({\left(\left|x\right|\right)}^{3} \cdot \left|x\right|\right)\right)\right)\right) \cdot \frac{1}{21}\right)\right|double f(double x) {
double r5474436 = 1.0;
double r5474437 = atan2(1.0, 0.0);
double r5474438 = sqrt(r5474437);
double r5474439 = r5474436 / r5474438;
double r5474440 = 2.0;
double r5474441 = x;
double r5474442 = fabs(r5474441);
double r5474443 = r5474440 * r5474442;
double r5474444 = 3.0;
double r5474445 = r5474440 / r5474444;
double r5474446 = r5474442 * r5474442;
double r5474447 = r5474446 * r5474442;
double r5474448 = r5474445 * r5474447;
double r5474449 = r5474443 + r5474448;
double r5474450 = 5.0;
double r5474451 = r5474436 / r5474450;
double r5474452 = r5474447 * r5474442;
double r5474453 = r5474452 * r5474442;
double r5474454 = r5474451 * r5474453;
double r5474455 = r5474449 + r5474454;
double r5474456 = 21.0;
double r5474457 = r5474436 / r5474456;
double r5474458 = r5474453 * r5474442;
double r5474459 = r5474458 * r5474442;
double r5474460 = r5474457 * r5474459;
double r5474461 = r5474455 + r5474460;
double r5474462 = r5474439 * r5474461;
double r5474463 = fabs(r5474462);
return r5474463;
}
double f(double x) {
double r5474464 = 1.0;
double r5474465 = atan2(1.0, 0.0);
double r5474466 = sqrt(r5474465);
double r5474467 = r5474464 / r5474466;
double r5474468 = 5.0;
double r5474469 = r5474464 / r5474468;
double r5474470 = x;
double r5474471 = fabs(r5474470);
double r5474472 = r5474471 * r5474471;
double r5474473 = r5474472 * r5474471;
double r5474474 = r5474473 * r5474471;
double r5474475 = r5474471 * r5474474;
double r5474476 = r5474469 * r5474475;
double r5474477 = 2.0;
double r5474478 = r5474471 * r5474477;
double r5474479 = 3.0;
double r5474480 = r5474477 / r5474479;
double r5474481 = r5474473 * r5474480;
double r5474482 = r5474478 + r5474481;
double r5474483 = r5474476 + r5474482;
double r5474484 = 3.0;
double r5474485 = pow(r5474471, r5474484);
double r5474486 = r5474485 * r5474471;
double r5474487 = r5474471 * r5474486;
double r5474488 = r5474471 * r5474487;
double r5474489 = r5474471 * r5474488;
double r5474490 = 21.0;
double r5474491 = r5474464 / r5474490;
double r5474492 = r5474489 * r5474491;
double r5474493 = r5474483 + r5474492;
double r5474494 = r5474467 * r5474493;
double r5474495 = fabs(r5474494);
return r5474495;
}



Bits error versus x
Results
Initial program 0.2
rmApplied pow10.2
Applied pow10.2
Applied pow10.2
Applied pow-prod-up0.2
Applied pow-prod-up0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019172
(FPCore (x)
:name "Jmat.Real.erfi, branch x less than or equal to 0.5"
(fabs (* (/ 1.0 (sqrt PI)) (+ (+ (+ (* 2.0 (fabs x)) (* (/ 2.0 3.0) (* (* (fabs x) (fabs x)) (fabs x)))) (* (/ 1.0 5.0) (* (* (* (* (fabs x) (fabs x)) (fabs x)) (fabs x)) (fabs x)))) (* (/ 1.0 21.0) (* (* (* (* (* (* (fabs x) (fabs x)) (fabs x)) (fabs x)) (fabs x)) (fabs x)) (fabs x)))))))