\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(\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) + \left(\frac{1}{21} \cdot {\left(\left|x\right|\right)}^{6}\right) \cdot \left|x\right|\right)\right|double f(double x) {
double r94662 = 1.0;
double r94663 = atan2(1.0, 0.0);
double r94664 = sqrt(r94663);
double r94665 = r94662 / r94664;
double r94666 = 2.0;
double r94667 = x;
double r94668 = fabs(r94667);
double r94669 = r94666 * r94668;
double r94670 = 3.0;
double r94671 = r94666 / r94670;
double r94672 = r94668 * r94668;
double r94673 = r94672 * r94668;
double r94674 = r94671 * r94673;
double r94675 = r94669 + r94674;
double r94676 = 5.0;
double r94677 = r94662 / r94676;
double r94678 = r94673 * r94668;
double r94679 = r94678 * r94668;
double r94680 = r94677 * r94679;
double r94681 = r94675 + r94680;
double r94682 = 21.0;
double r94683 = r94662 / r94682;
double r94684 = r94679 * r94668;
double r94685 = r94684 * r94668;
double r94686 = r94683 * r94685;
double r94687 = r94681 + r94686;
double r94688 = r94665 * r94687;
double r94689 = fabs(r94688);
return r94689;
}
double f(double x) {
double r94690 = 1.0;
double r94691 = atan2(1.0, 0.0);
double r94692 = sqrt(r94691);
double r94693 = r94690 / r94692;
double r94694 = 2.0;
double r94695 = x;
double r94696 = fabs(r94695);
double r94697 = r94694 * r94696;
double r94698 = 3.0;
double r94699 = r94694 / r94698;
double r94700 = r94696 * r94696;
double r94701 = r94700 * r94696;
double r94702 = r94699 * r94701;
double r94703 = r94697 + r94702;
double r94704 = 5.0;
double r94705 = r94690 / r94704;
double r94706 = r94701 * r94696;
double r94707 = r94706 * r94696;
double r94708 = r94705 * r94707;
double r94709 = r94703 + r94708;
double r94710 = 21.0;
double r94711 = r94690 / r94710;
double r94712 = 6.0;
double r94713 = pow(r94696, r94712);
double r94714 = r94711 * r94713;
double r94715 = r94714 * r94696;
double r94716 = r94709 + r94715;
double r94717 = r94693 * r94716;
double r94718 = fabs(r94717);
return r94718;
}



Bits error versus x
Results
Initial program 0.2
rmApplied associate-*r*0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019306 +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)))))))