\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 \mathsf{fma}\left({\left(\left|x\right|\right)}^{7}, \frac{1}{21}, \mathsf{fma}\left(\left|x\right|, \mathsf{fma}\left({\left(\left|x\right|\right)}^{4}, \frac{1}{5}, 2\right), {\left(\left|x\right|\right)}^{3} \cdot \frac{2}{3}\right)\right)\right|double f(double x) {
double r180415 = 1.0;
double r180416 = atan2(1.0, 0.0);
double r180417 = sqrt(r180416);
double r180418 = r180415 / r180417;
double r180419 = 2.0;
double r180420 = x;
double r180421 = fabs(r180420);
double r180422 = r180419 * r180421;
double r180423 = 3.0;
double r180424 = r180419 / r180423;
double r180425 = r180421 * r180421;
double r180426 = r180425 * r180421;
double r180427 = r180424 * r180426;
double r180428 = r180422 + r180427;
double r180429 = 5.0;
double r180430 = r180415 / r180429;
double r180431 = r180426 * r180421;
double r180432 = r180431 * r180421;
double r180433 = r180430 * r180432;
double r180434 = r180428 + r180433;
double r180435 = 21.0;
double r180436 = r180415 / r180435;
double r180437 = r180432 * r180421;
double r180438 = r180437 * r180421;
double r180439 = r180436 * r180438;
double r180440 = r180434 + r180439;
double r180441 = r180418 * r180440;
double r180442 = fabs(r180441);
return r180442;
}
double f(double x) {
double r180443 = 1.0;
double r180444 = atan2(1.0, 0.0);
double r180445 = sqrt(r180444);
double r180446 = r180443 / r180445;
double r180447 = x;
double r180448 = fabs(r180447);
double r180449 = 7.0;
double r180450 = pow(r180448, r180449);
double r180451 = 21.0;
double r180452 = r180443 / r180451;
double r180453 = 4.0;
double r180454 = pow(r180448, r180453);
double r180455 = 5.0;
double r180456 = r180443 / r180455;
double r180457 = 2.0;
double r180458 = fma(r180454, r180456, r180457);
double r180459 = 3.0;
double r180460 = pow(r180448, r180459);
double r180461 = 3.0;
double r180462 = r180457 / r180461;
double r180463 = r180460 * r180462;
double r180464 = fma(r180448, r180458, r180463);
double r180465 = fma(r180450, r180452, r180464);
double r180466 = r180446 * r180465;
double r180467 = fabs(r180466);
return r180467;
}



Bits error versus x
Initial program 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020042 +o rules:numerics
(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)))))))