\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(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right)\right)\right) \cdot \frac{1}{21}\right)\right|double f(double x) {
double r7530760 = 1.0;
double r7530761 = atan2(1.0, 0.0);
double r7530762 = sqrt(r7530761);
double r7530763 = r7530760 / r7530762;
double r7530764 = 2.0;
double r7530765 = x;
double r7530766 = fabs(r7530765);
double r7530767 = r7530764 * r7530766;
double r7530768 = 3.0;
double r7530769 = r7530764 / r7530768;
double r7530770 = r7530766 * r7530766;
double r7530771 = r7530770 * r7530766;
double r7530772 = r7530769 * r7530771;
double r7530773 = r7530767 + r7530772;
double r7530774 = 5.0;
double r7530775 = r7530760 / r7530774;
double r7530776 = r7530771 * r7530766;
double r7530777 = r7530776 * r7530766;
double r7530778 = r7530775 * r7530777;
double r7530779 = r7530773 + r7530778;
double r7530780 = 21.0;
double r7530781 = r7530760 / r7530780;
double r7530782 = r7530777 * r7530766;
double r7530783 = r7530782 * r7530766;
double r7530784 = r7530781 * r7530783;
double r7530785 = r7530779 + r7530784;
double r7530786 = r7530763 * r7530785;
double r7530787 = fabs(r7530786);
return r7530787;
}
double f(double x) {
double r7530788 = 1.0;
double r7530789 = atan2(1.0, 0.0);
double r7530790 = sqrt(r7530789);
double r7530791 = r7530788 / r7530790;
double r7530792 = 5.0;
double r7530793 = r7530788 / r7530792;
double r7530794 = x;
double r7530795 = fabs(r7530794);
double r7530796 = r7530795 * r7530795;
double r7530797 = r7530796 * r7530795;
double r7530798 = r7530797 * r7530795;
double r7530799 = r7530795 * r7530798;
double r7530800 = r7530793 * r7530799;
double r7530801 = 2.0;
double r7530802 = r7530795 * r7530801;
double r7530803 = 3.0;
double r7530804 = r7530801 / r7530803;
double r7530805 = r7530797 * r7530804;
double r7530806 = r7530802 + r7530805;
double r7530807 = r7530800 + r7530806;
double r7530808 = r7530795 * r7530799;
double r7530809 = r7530795 * r7530808;
double r7530810 = 21.0;
double r7530811 = r7530788 / r7530810;
double r7530812 = r7530809 * r7530811;
double r7530813 = r7530807 + r7530812;
double r7530814 = r7530791 * r7530813;
double r7530815 = fabs(r7530814);
return r7530815;
}



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