\left(\frac{1}{\sqrt{\pi}} \cdot e^{\left|x\right| \cdot \left|x\right|}\right) \cdot \left(\left(\left(\frac{1}{\left|x\right|} + \frac{1}{2} \cdot \left(\left(\frac{1}{\left|x\right|} \cdot \frac{1}{\left|x\right|}\right) \cdot \frac{1}{\left|x\right|}\right)\right) + \frac{3}{4} \cdot \left(\left(\left(\left(\frac{1}{\left|x\right|} \cdot \frac{1}{\left|x\right|}\right) \cdot \frac{1}{\left|x\right|}\right) \cdot \frac{1}{\left|x\right|}\right) \cdot \frac{1}{\left|x\right|}\right)\right) + \frac{15}{8} \cdot \left(\left(\left(\left(\left(\left(\frac{1}{\left|x\right|} \cdot \frac{1}{\left|x\right|}\right) \cdot \frac{1}{\left|x\right|}\right) \cdot \frac{1}{\left|x\right|}\right) \cdot \frac{1}{\left|x\right|}\right) \cdot \frac{1}{\left|x\right|}\right) \cdot \frac{1}{\left|x\right|}\right)\right)\left(\left(\left(\frac{1.875}{{\left(\left|x\right|\right)}^{7}} + \left(\frac{1}{\left|x\right|} + \frac{0.75}{{\left(\left|x\right|\right)}^{5}}\right)\right) + \frac{0.5}{{\left(\left|x\right|\right)}^{3}}\right) \cdot \left(e^{{\left(\left|x\right|\right)}^{2}} \cdot 1\right)\right) \cdot \sqrt{\frac{1}{\pi}}double f(double x) {
double r219750 = 1.0;
double r219751 = atan2(1.0, 0.0);
double r219752 = sqrt(r219751);
double r219753 = r219750 / r219752;
double r219754 = x;
double r219755 = fabs(r219754);
double r219756 = r219755 * r219755;
double r219757 = exp(r219756);
double r219758 = r219753 * r219757;
double r219759 = r219750 / r219755;
double r219760 = 2.0;
double r219761 = r219750 / r219760;
double r219762 = r219759 * r219759;
double r219763 = r219762 * r219759;
double r219764 = r219761 * r219763;
double r219765 = r219759 + r219764;
double r219766 = 3.0;
double r219767 = 4.0;
double r219768 = r219766 / r219767;
double r219769 = r219763 * r219759;
double r219770 = r219769 * r219759;
double r219771 = r219768 * r219770;
double r219772 = r219765 + r219771;
double r219773 = 15.0;
double r219774 = 8.0;
double r219775 = r219773 / r219774;
double r219776 = r219770 * r219759;
double r219777 = r219776 * r219759;
double r219778 = r219775 * r219777;
double r219779 = r219772 + r219778;
double r219780 = r219758 * r219779;
return r219780;
}
double f(double x) {
double r219781 = 1.875;
double r219782 = x;
double r219783 = fabs(r219782);
double r219784 = 7.0;
double r219785 = pow(r219783, r219784);
double r219786 = r219781 / r219785;
double r219787 = 1.0;
double r219788 = r219787 / r219783;
double r219789 = 0.75;
double r219790 = 5.0;
double r219791 = pow(r219783, r219790);
double r219792 = r219789 / r219791;
double r219793 = r219788 + r219792;
double r219794 = r219786 + r219793;
double r219795 = 0.5;
double r219796 = 3.0;
double r219797 = pow(r219783, r219796);
double r219798 = r219795 / r219797;
double r219799 = r219794 + r219798;
double r219800 = 2.0;
double r219801 = pow(r219783, r219800);
double r219802 = exp(r219801);
double r219803 = r219802 * r219787;
double r219804 = r219799 * r219803;
double r219805 = 1.0;
double r219806 = atan2(1.0, 0.0);
double r219807 = r219805 / r219806;
double r219808 = sqrt(r219807);
double r219809 = r219804 * r219808;
return r219809;
}



Bits error versus x
Results
Initial program 1.5
Simplified1.1
Taylor expanded around 0 0.7
Taylor expanded around 0 0.6
Simplified0.5
rmApplied associate-*r*0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2020043 +o rules:numerics
(FPCore (x)
:name "Jmat.Real.erfi, branch x greater than or equal to 5"
:precision binary64
(* (* (/ 1 (sqrt PI)) (exp (* (fabs x) (fabs x)))) (+ (+ (+ (/ 1 (fabs x)) (* (/ 1 2) (* (* (/ 1 (fabs x)) (/ 1 (fabs x))) (/ 1 (fabs x))))) (* (/ 3 4) (* (* (* (* (/ 1 (fabs x)) (/ 1 (fabs x))) (/ 1 (fabs x))) (/ 1 (fabs x))) (/ 1 (fabs x))))) (* (/ 15 8) (* (* (* (* (* (* (/ 1 (fabs x)) (/ 1 (fabs x))) (/ 1 (fabs x))) (/ 1 (fabs x))) (/ 1 (fabs x))) (/ 1 (fabs x))) (/ 1 (fabs x)))))))