\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|\left(\sqrt{\frac{1}{\pi}} \cdot 1\right) \cdot \left(0.04761904761904761640423089374962728470564 \cdot {\left(\left|x\right|\right)}^{7} + \left(\left(0.2000000000000000111022302462515654042363 \cdot {\left(\left|x\right|\right)}^{5} + \left|x\right| \cdot 2\right) + \left(\left|x\right| \cdot 0.6666666666666666296592325124947819858789\right) \cdot \left(\left|x\right| \cdot \left|x\right|\right)\right)\right)\right|double f(double x) {
double r6616774 = 1.0;
double r6616775 = atan2(1.0, 0.0);
double r6616776 = sqrt(r6616775);
double r6616777 = r6616774 / r6616776;
double r6616778 = 2.0;
double r6616779 = x;
double r6616780 = fabs(r6616779);
double r6616781 = r6616778 * r6616780;
double r6616782 = 3.0;
double r6616783 = r6616778 / r6616782;
double r6616784 = r6616780 * r6616780;
double r6616785 = r6616784 * r6616780;
double r6616786 = r6616783 * r6616785;
double r6616787 = r6616781 + r6616786;
double r6616788 = 5.0;
double r6616789 = r6616774 / r6616788;
double r6616790 = r6616785 * r6616780;
double r6616791 = r6616790 * r6616780;
double r6616792 = r6616789 * r6616791;
double r6616793 = r6616787 + r6616792;
double r6616794 = 21.0;
double r6616795 = r6616774 / r6616794;
double r6616796 = r6616791 * r6616780;
double r6616797 = r6616796 * r6616780;
double r6616798 = r6616795 * r6616797;
double r6616799 = r6616793 + r6616798;
double r6616800 = r6616777 * r6616799;
double r6616801 = fabs(r6616800);
return r6616801;
}
double f(double x) {
double r6616802 = 1.0;
double r6616803 = atan2(1.0, 0.0);
double r6616804 = r6616802 / r6616803;
double r6616805 = sqrt(r6616804);
double r6616806 = 1.0;
double r6616807 = r6616805 * r6616806;
double r6616808 = 0.047619047619047616;
double r6616809 = x;
double r6616810 = fabs(r6616809);
double r6616811 = 7.0;
double r6616812 = pow(r6616810, r6616811);
double r6616813 = r6616808 * r6616812;
double r6616814 = 0.2;
double r6616815 = 5.0;
double r6616816 = pow(r6616810, r6616815);
double r6616817 = r6616814 * r6616816;
double r6616818 = 2.0;
double r6616819 = r6616810 * r6616818;
double r6616820 = r6616817 + r6616819;
double r6616821 = 0.6666666666666666;
double r6616822 = r6616810 * r6616821;
double r6616823 = r6616810 * r6616810;
double r6616824 = r6616822 * r6616823;
double r6616825 = r6616820 + r6616824;
double r6616826 = r6616813 + r6616825;
double r6616827 = r6616807 * r6616826;
double r6616828 = fabs(r6616827);
return r6616828;
}



Bits error versus x
Results
Initial program 0.2
Taylor expanded around 0 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019200
(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)))))))