1 - \left(\frac{1}{1 + 0.3275911 \cdot \left|x\right|} \cdot \left(0.254829592 + \frac{1}{1 + 0.3275911 \cdot \left|x\right|} \cdot \left(-0.284496736 + \frac{1}{1 + 0.3275911 \cdot \left|x\right|} \cdot \left(1.421413741 + \frac{1}{1 + 0.3275911 \cdot \left|x\right|} \cdot \left(-1.453152027 + \frac{1}{1 + 0.3275911 \cdot \left|x\right|} \cdot 1.061405429\right)\right)\right)\right)\right) \cdot e^{-\left|x\right| \cdot \left|x\right|}\left(\sqrt[3]{1 - \left(\frac{1}{1 + \left|x\right| \cdot 0.3275911} \cdot \left(0.254829592 + \left(\sqrt{\frac{1}{1 - \left(\left|x\right| \cdot 0.3275911\right) \cdot \left(\left|x\right| \cdot 0.3275911\right)} \cdot \left(\left(1 - \left|x\right| \cdot 0.3275911\right) \cdot \left(1.421413741 + \left(\frac{1}{1 + \left|x\right| \cdot 0.3275911} \cdot 1.061405429 + -1.453152027\right) \cdot \frac{1}{1 + \left|x\right| \cdot 0.3275911}\right)\right)} \cdot \sqrt{\frac{1}{1 - \left(\left|x\right| \cdot 0.3275911\right) \cdot \left(\left|x\right| \cdot 0.3275911\right)} \cdot \left(\left(1 - \left|x\right| \cdot 0.3275911\right) \cdot \left(1.421413741 + \left(\frac{1}{1 + \left|x\right| \cdot 0.3275911} \cdot 1.061405429 + -1.453152027\right) \cdot \frac{1}{1 + \left|x\right| \cdot 0.3275911}\right)\right)} + -0.284496736\right) \cdot \frac{1}{1 + \left|x\right| \cdot 0.3275911}\right)\right) \cdot e^{\left|x\right| \cdot \left(-\left|x\right|\right)}} \cdot \sqrt[3]{1 - e^{\left|x\right| \cdot \left(-\left|x\right|\right)} \cdot \left(\frac{1}{1 + \left|x\right| \cdot 0.3275911} \cdot \left(0.254829592 + \left(-0.284496736 + \frac{1}{1 - \left(\left|x\right| \cdot 0.3275911\right) \cdot \left(\left|x\right| \cdot 0.3275911\right)} \cdot \left(\left(1 - \left|x\right| \cdot 0.3275911\right) \cdot \left(1.421413741 + \left(\frac{1}{1 + \left|x\right| \cdot 0.3275911} \cdot 1.061405429 + -1.453152027\right) \cdot \frac{1}{1 + \left|x\right| \cdot 0.3275911}\right)\right)\right) \cdot \frac{1}{1 + \left|x\right| \cdot 0.3275911}\right)\right)}\right) \cdot \sqrt[3]{1 - e^{\left|x\right| \cdot \left(-\left|x\right|\right)} \cdot \left(\frac{1}{1 + \left|x\right| \cdot 0.3275911} \cdot \left(0.254829592 + \left(-0.284496736 + \frac{1}{1 - \left(\left|x\right| \cdot 0.3275911\right) \cdot \left(\left|x\right| \cdot 0.3275911\right)} \cdot \left(\left(1 - \left|x\right| \cdot 0.3275911\right) \cdot \left(1.421413741 + \left(\frac{1}{1 + \left|x\right| \cdot 0.3275911} \cdot 1.061405429 + -1.453152027\right) \cdot \frac{1}{1 + \left|x\right| \cdot 0.3275911}\right)\right)\right) \cdot \frac{1}{1 + \left|x\right| \cdot 0.3275911}\right)\right)}double f(double x) {
double r3599641 = 1.0;
double r3599642 = 0.3275911;
double r3599643 = x;
double r3599644 = fabs(r3599643);
double r3599645 = r3599642 * r3599644;
double r3599646 = r3599641 + r3599645;
double r3599647 = r3599641 / r3599646;
double r3599648 = 0.254829592;
double r3599649 = -0.284496736;
double r3599650 = 1.421413741;
double r3599651 = -1.453152027;
double r3599652 = 1.061405429;
double r3599653 = r3599647 * r3599652;
double r3599654 = r3599651 + r3599653;
double r3599655 = r3599647 * r3599654;
double r3599656 = r3599650 + r3599655;
double r3599657 = r3599647 * r3599656;
double r3599658 = r3599649 + r3599657;
double r3599659 = r3599647 * r3599658;
double r3599660 = r3599648 + r3599659;
double r3599661 = r3599647 * r3599660;
double r3599662 = r3599644 * r3599644;
double r3599663 = -r3599662;
double r3599664 = exp(r3599663);
double r3599665 = r3599661 * r3599664;
double r3599666 = r3599641 - r3599665;
return r3599666;
}
double f(double x) {
double r3599667 = 1.0;
double r3599668 = x;
double r3599669 = fabs(r3599668);
double r3599670 = 0.3275911;
double r3599671 = r3599669 * r3599670;
double r3599672 = r3599667 + r3599671;
double r3599673 = r3599667 / r3599672;
double r3599674 = 0.254829592;
double r3599675 = r3599671 * r3599671;
double r3599676 = r3599667 - r3599675;
double r3599677 = r3599667 / r3599676;
double r3599678 = r3599667 - r3599671;
double r3599679 = 1.421413741;
double r3599680 = 1.061405429;
double r3599681 = r3599673 * r3599680;
double r3599682 = -1.453152027;
double r3599683 = r3599681 + r3599682;
double r3599684 = r3599683 * r3599673;
double r3599685 = r3599679 + r3599684;
double r3599686 = r3599678 * r3599685;
double r3599687 = r3599677 * r3599686;
double r3599688 = sqrt(r3599687);
double r3599689 = r3599688 * r3599688;
double r3599690 = -0.284496736;
double r3599691 = r3599689 + r3599690;
double r3599692 = r3599691 * r3599673;
double r3599693 = r3599674 + r3599692;
double r3599694 = r3599673 * r3599693;
double r3599695 = -r3599669;
double r3599696 = r3599669 * r3599695;
double r3599697 = exp(r3599696);
double r3599698 = r3599694 * r3599697;
double r3599699 = r3599667 - r3599698;
double r3599700 = cbrt(r3599699);
double r3599701 = r3599690 + r3599687;
double r3599702 = r3599701 * r3599673;
double r3599703 = r3599674 + r3599702;
double r3599704 = r3599673 * r3599703;
double r3599705 = r3599697 * r3599704;
double r3599706 = r3599667 - r3599705;
double r3599707 = cbrt(r3599706);
double r3599708 = r3599700 * r3599707;
double r3599709 = r3599708 * r3599707;
return r3599709;
}



Bits error versus x
Results
Initial program 13.7
rmApplied flip-+13.6
Applied associate-/r/13.6
Applied associate-*l*13.6
rmApplied add-cube-cbrt13.6
rmApplied add-sqr-sqrt12.9
Final simplification12.9
herbie shell --seed 2019153
(FPCore (x)
:name "Jmat.Real.erf"
(- 1 (* (* (/ 1 (+ 1 (* 0.3275911 (fabs x)))) (+ 0.254829592 (* (/ 1 (+ 1 (* 0.3275911 (fabs x)))) (+ -0.284496736 (* (/ 1 (+ 1 (* 0.3275911 (fabs x)))) (+ 1.421413741 (* (/ 1 (+ 1 (* 0.3275911 (fabs x)))) (+ -1.453152027 (* (/ 1 (+ 1 (* 0.3275911 (fabs x)))) 1.061405429))))))))) (exp (- (* (fabs x) (fabs x)))))))