Average Error: 0.2 → 0.2
Time: 29.2s
Precision: 64
\[\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|\mathsf{fma}\left(\frac{1}{5}, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(\left|x\right|, 2, \mathsf{fma}\left(\frac{1}{21}, {\left(\left|x\right|\right)}^{7}, \left(\left|x\right| \cdot \left(\left|x\right| \cdot \left|x\right|\right)\right) \cdot \frac{2}{3}\right)\right)\right) \cdot \sqrt{\frac{1}{\pi}}\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) + \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|\mathsf{fma}\left(\frac{1}{5}, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(\left|x\right|, 2, \mathsf{fma}\left(\frac{1}{21}, {\left(\left|x\right|\right)}^{7}, \left(\left|x\right| \cdot \left(\left|x\right| \cdot \left|x\right|\right)\right) \cdot \frac{2}{3}\right)\right)\right) \cdot \sqrt{\frac{1}{\pi}}\right|
double f(double x) {
        double r5557713 = 1.0;
        double r5557714 = atan2(1.0, 0.0);
        double r5557715 = sqrt(r5557714);
        double r5557716 = r5557713 / r5557715;
        double r5557717 = 2.0;
        double r5557718 = x;
        double r5557719 = fabs(r5557718);
        double r5557720 = r5557717 * r5557719;
        double r5557721 = 3.0;
        double r5557722 = r5557717 / r5557721;
        double r5557723 = r5557719 * r5557719;
        double r5557724 = r5557723 * r5557719;
        double r5557725 = r5557722 * r5557724;
        double r5557726 = r5557720 + r5557725;
        double r5557727 = 5.0;
        double r5557728 = r5557713 / r5557727;
        double r5557729 = r5557724 * r5557719;
        double r5557730 = r5557729 * r5557719;
        double r5557731 = r5557728 * r5557730;
        double r5557732 = r5557726 + r5557731;
        double r5557733 = 21.0;
        double r5557734 = r5557713 / r5557733;
        double r5557735 = r5557730 * r5557719;
        double r5557736 = r5557735 * r5557719;
        double r5557737 = r5557734 * r5557736;
        double r5557738 = r5557732 + r5557737;
        double r5557739 = r5557716 * r5557738;
        double r5557740 = fabs(r5557739);
        return r5557740;
}

double f(double x) {
        double r5557741 = 0.2;
        double r5557742 = x;
        double r5557743 = fabs(r5557742);
        double r5557744 = 5.0;
        double r5557745 = pow(r5557743, r5557744);
        double r5557746 = 2.0;
        double r5557747 = 0.047619047619047616;
        double r5557748 = 7.0;
        double r5557749 = pow(r5557743, r5557748);
        double r5557750 = r5557743 * r5557743;
        double r5557751 = r5557743 * r5557750;
        double r5557752 = 0.6666666666666666;
        double r5557753 = r5557751 * r5557752;
        double r5557754 = fma(r5557747, r5557749, r5557753);
        double r5557755 = fma(r5557743, r5557746, r5557754);
        double r5557756 = fma(r5557741, r5557745, r5557755);
        double r5557757 = 1.0;
        double r5557758 = atan2(1.0, 0.0);
        double r5557759 = r5557757 / r5557758;
        double r5557760 = sqrt(r5557759);
        double r5557761 = r5557756 * r5557760;
        double r5557762 = fabs(r5557761);
        return r5557762;
}

Error

Bits error versus x

Derivation

  1. Initial program 0.2

    \[\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|\]
  2. Taylor expanded around 0 0.2

    \[\leadsto \left|\color{blue}{\sqrt{\frac{1}{\pi}} \cdot \left(\frac{1}{5} \cdot {\left(\left|x\right|\right)}^{5} + \left(2 \cdot \left|x\right| + \left(\frac{2}{3} \cdot {\left(\left|x\right|\right)}^{3} + \frac{1}{21} \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right)}\right|\]
  3. Simplified0.2

    \[\leadsto \left|\color{blue}{\mathsf{fma}\left(\frac{1}{5}, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(\left|x\right|, 2, \mathsf{fma}\left(\frac{1}{21}, {\left(\left|x\right|\right)}^{7}, \left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \frac{2}{3}\right)\right)\right) \cdot \sqrt{\frac{1}{\pi}}}\right|\]
  4. Final simplification0.2

    \[\leadsto \left|\mathsf{fma}\left(\frac{1}{5}, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(\left|x\right|, 2, \mathsf{fma}\left(\frac{1}{21}, {\left(\left|x\right|\right)}^{7}, \left(\left|x\right| \cdot \left(\left|x\right| \cdot \left|x\right|\right)\right) \cdot \frac{2}{3}\right)\right)\right) \cdot \sqrt{\frac{1}{\pi}}\right|\]

Reproduce

herbie shell --seed 2019163 +o rules:numerics
(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)))))))