\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) + \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|double f(double x) {
double r93763 = 1.0;
double r93764 = atan2(1.0, 0.0);
double r93765 = sqrt(r93764);
double r93766 = r93763 / r93765;
double r93767 = 2.0;
double r93768 = x;
double r93769 = fabs(r93768);
double r93770 = r93767 * r93769;
double r93771 = 3.0;
double r93772 = r93767 / r93771;
double r93773 = r93769 * r93769;
double r93774 = r93773 * r93769;
double r93775 = r93772 * r93774;
double r93776 = r93770 + r93775;
double r93777 = 5.0;
double r93778 = r93763 / r93777;
double r93779 = r93774 * r93769;
double r93780 = r93779 * r93769;
double r93781 = r93778 * r93780;
double r93782 = r93776 + r93781;
double r93783 = 21.0;
double r93784 = r93763 / r93783;
double r93785 = r93780 * r93769;
double r93786 = r93785 * r93769;
double r93787 = r93784 * r93786;
double r93788 = r93782 + r93787;
double r93789 = r93766 * r93788;
double r93790 = fabs(r93789);
return r93790;
}
double f(double x) {
double r93791 = 1.0;
double r93792 = atan2(1.0, 0.0);
double r93793 = sqrt(r93792);
double r93794 = r93791 / r93793;
double r93795 = 2.0;
double r93796 = x;
double r93797 = fabs(r93796);
double r93798 = r93795 * r93797;
double r93799 = 3.0;
double r93800 = r93795 / r93799;
double r93801 = r93797 * r93797;
double r93802 = r93801 * r93797;
double r93803 = r93800 * r93802;
double r93804 = r93798 + r93803;
double r93805 = 5.0;
double r93806 = r93791 / r93805;
double r93807 = r93802 * r93797;
double r93808 = r93807 * r93797;
double r93809 = r93806 * r93808;
double r93810 = r93804 + r93809;
double r93811 = 21.0;
double r93812 = r93791 / r93811;
double r93813 = r93808 * r93797;
double r93814 = r93813 * r93797;
double r93815 = r93812 * r93814;
double r93816 = r93810 + r93815;
double r93817 = r93794 * r93816;
double r93818 = fabs(r93817);
return r93818;
}



Bits error versus x
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2019323 +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)))))))