\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|\sqrt{\frac{1}{\pi}} \cdot \left(\frac{1}{21} \cdot {\left(\left|x\right|\right)}^{7} + \left({\left(\left|x\right|\right)}^{5} \cdot \frac{1}{5} + \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)\right)\right|double f(double x) {
double r5127766 = 1.0;
double r5127767 = atan2(1.0, 0.0);
double r5127768 = sqrt(r5127767);
double r5127769 = r5127766 / r5127768;
double r5127770 = 2.0;
double r5127771 = x;
double r5127772 = fabs(r5127771);
double r5127773 = r5127770 * r5127772;
double r5127774 = 3.0;
double r5127775 = r5127770 / r5127774;
double r5127776 = r5127772 * r5127772;
double r5127777 = r5127776 * r5127772;
double r5127778 = r5127775 * r5127777;
double r5127779 = r5127773 + r5127778;
double r5127780 = 5.0;
double r5127781 = r5127766 / r5127780;
double r5127782 = r5127777 * r5127772;
double r5127783 = r5127782 * r5127772;
double r5127784 = r5127781 * r5127783;
double r5127785 = r5127779 + r5127784;
double r5127786 = 21.0;
double r5127787 = r5127766 / r5127786;
double r5127788 = r5127783 * r5127772;
double r5127789 = r5127788 * r5127772;
double r5127790 = r5127787 * r5127789;
double r5127791 = r5127785 + r5127790;
double r5127792 = r5127769 * r5127791;
double r5127793 = fabs(r5127792);
return r5127793;
}
double f(double x) {
double r5127794 = 1.0;
double r5127795 = atan2(1.0, 0.0);
double r5127796 = r5127794 / r5127795;
double r5127797 = sqrt(r5127796);
double r5127798 = 0.047619047619047616;
double r5127799 = x;
double r5127800 = fabs(r5127799);
double r5127801 = 7.0;
double r5127802 = pow(r5127800, r5127801);
double r5127803 = r5127798 * r5127802;
double r5127804 = 5.0;
double r5127805 = pow(r5127800, r5127804);
double r5127806 = 0.2;
double r5127807 = r5127805 * r5127806;
double r5127808 = 2.0;
double r5127809 = r5127800 * r5127808;
double r5127810 = r5127800 * r5127800;
double r5127811 = r5127810 * r5127800;
double r5127812 = 0.6666666666666666;
double r5127813 = r5127811 * r5127812;
double r5127814 = r5127809 + r5127813;
double r5127815 = r5127807 + r5127814;
double r5127816 = r5127803 + r5127815;
double r5127817 = r5127797 * r5127816;
double r5127818 = fabs(r5127817);
return r5127818;
}



Bits error versus x
Results
Initial program 0.2
Simplified0.6
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019134
(FPCore (x)
:name "Jmat.Real.erfi, branch x less than or equal to 0.5"
(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)))))))