\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) + \left(\frac{1}{21} \cdot \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)\right) \cdot \left|x\right|\right)\right|double f(double x) {
double r10071669 = 1.0;
double r10071670 = atan2(1.0, 0.0);
double r10071671 = sqrt(r10071670);
double r10071672 = r10071669 / r10071671;
double r10071673 = 2.0;
double r10071674 = x;
double r10071675 = fabs(r10071674);
double r10071676 = r10071673 * r10071675;
double r10071677 = 3.0;
double r10071678 = r10071673 / r10071677;
double r10071679 = r10071675 * r10071675;
double r10071680 = r10071679 * r10071675;
double r10071681 = r10071678 * r10071680;
double r10071682 = r10071676 + r10071681;
double r10071683 = 5.0;
double r10071684 = r10071669 / r10071683;
double r10071685 = r10071680 * r10071675;
double r10071686 = r10071685 * r10071675;
double r10071687 = r10071684 * r10071686;
double r10071688 = r10071682 + r10071687;
double r10071689 = 21.0;
double r10071690 = r10071669 / r10071689;
double r10071691 = r10071686 * r10071675;
double r10071692 = r10071691 * r10071675;
double r10071693 = r10071690 * r10071692;
double r10071694 = r10071688 + r10071693;
double r10071695 = r10071672 * r10071694;
double r10071696 = fabs(r10071695);
return r10071696;
}
double f(double x) {
double r10071697 = 1.0;
double r10071698 = atan2(1.0, 0.0);
double r10071699 = sqrt(r10071698);
double r10071700 = r10071697 / r10071699;
double r10071701 = 2.0;
double r10071702 = x;
double r10071703 = fabs(r10071702);
double r10071704 = r10071701 * r10071703;
double r10071705 = 3.0;
double r10071706 = r10071701 / r10071705;
double r10071707 = r10071703 * r10071703;
double r10071708 = r10071707 * r10071703;
double r10071709 = r10071706 * r10071708;
double r10071710 = r10071704 + r10071709;
double r10071711 = 5.0;
double r10071712 = r10071697 / r10071711;
double r10071713 = r10071708 * r10071703;
double r10071714 = r10071713 * r10071703;
double r10071715 = r10071712 * r10071714;
double r10071716 = r10071710 + r10071715;
double r10071717 = 21.0;
double r10071718 = r10071697 / r10071717;
double r10071719 = r10071714 * r10071703;
double r10071720 = r10071718 * r10071719;
double r10071721 = r10071720 * r10071703;
double r10071722 = r10071716 + r10071721;
double r10071723 = r10071700 * r10071722;
double r10071724 = fabs(r10071723);
return r10071724;
}



Bits error versus x
Results
Initial program 0.2
rmApplied associate-*r*0.2
Final simplification0.2
herbie shell --seed 2019174
(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)))))))