\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 r32560 = 1.0;
double r32561 = atan2(1.0, 0.0);
double r32562 = sqrt(r32561);
double r32563 = r32560 / r32562;
double r32564 = 2.0;
double r32565 = x;
double r32566 = fabs(r32565);
double r32567 = r32564 * r32566;
double r32568 = 3.0;
double r32569 = r32564 / r32568;
double r32570 = r32566 * r32566;
double r32571 = r32570 * r32566;
double r32572 = r32569 * r32571;
double r32573 = r32567 + r32572;
double r32574 = 5.0;
double r32575 = r32560 / r32574;
double r32576 = r32571 * r32566;
double r32577 = r32576 * r32566;
double r32578 = r32575 * r32577;
double r32579 = r32573 + r32578;
double r32580 = 21.0;
double r32581 = r32560 / r32580;
double r32582 = r32577 * r32566;
double r32583 = r32582 * r32566;
double r32584 = r32581 * r32583;
double r32585 = r32579 + r32584;
double r32586 = r32563 * r32585;
double r32587 = fabs(r32586);
return r32587;
}
double f(double x) {
double r32588 = 1.0;
double r32589 = 1.0;
double r32590 = atan2(1.0, 0.0);
double r32591 = r32589 / r32590;
double r32592 = sqrt(r32591);
double r32593 = 0.6666666666666666;
double r32594 = x;
double r32595 = fabs(r32594);
double r32596 = 3.0;
double r32597 = pow(r32595, r32596);
double r32598 = r32593 * r32597;
double r32599 = 0.2;
double r32600 = 5.0;
double r32601 = pow(r32595, r32600);
double r32602 = r32599 * r32601;
double r32603 = 2.0;
double r32604 = r32603 * r32595;
double r32605 = 0.047619047619047616;
double r32606 = 7.0;
double r32607 = pow(r32595, r32606);
double r32608 = r32605 * r32607;
double r32609 = r32604 + r32608;
double r32610 = r32602 + r32609;
double r32611 = r32598 + r32610;
double r32612 = r32592 * r32611;
double r32613 = r32588 * r32612;
double r32614 = fabs(r32613);
return r32614;
}



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