Average Error: 0.2 → 0.2
Time: 7.6s
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|\left(1 \cdot \sqrt{\frac{1}{\pi}}\right) \cdot \mathsf{fma}\left(0.66666666666666663, {\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(0.20000000000000001, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(2, \left|x\right|, 0.047619047619047616 \cdot {\left(\left|x\right|\right)}^{7}\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) + \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(1 \cdot \sqrt{\frac{1}{\pi}}\right) \cdot \mathsf{fma}\left(0.66666666666666663, {\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(0.20000000000000001, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(2, \left|x\right|, 0.047619047619047616 \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right)\right|
double f(double x) {
        double r171699 = 1.0;
        double r171700 = atan2(1.0, 0.0);
        double r171701 = sqrt(r171700);
        double r171702 = r171699 / r171701;
        double r171703 = 2.0;
        double r171704 = x;
        double r171705 = fabs(r171704);
        double r171706 = r171703 * r171705;
        double r171707 = 3.0;
        double r171708 = r171703 / r171707;
        double r171709 = r171705 * r171705;
        double r171710 = r171709 * r171705;
        double r171711 = r171708 * r171710;
        double r171712 = r171706 + r171711;
        double r171713 = 5.0;
        double r171714 = r171699 / r171713;
        double r171715 = r171710 * r171705;
        double r171716 = r171715 * r171705;
        double r171717 = r171714 * r171716;
        double r171718 = r171712 + r171717;
        double r171719 = 21.0;
        double r171720 = r171699 / r171719;
        double r171721 = r171716 * r171705;
        double r171722 = r171721 * r171705;
        double r171723 = r171720 * r171722;
        double r171724 = r171718 + r171723;
        double r171725 = r171702 * r171724;
        double r171726 = fabs(r171725);
        return r171726;
}

double f(double x) {
        double r171727 = 1.0;
        double r171728 = 1.0;
        double r171729 = atan2(1.0, 0.0);
        double r171730 = r171728 / r171729;
        double r171731 = sqrt(r171730);
        double r171732 = r171727 * r171731;
        double r171733 = 0.6666666666666666;
        double r171734 = x;
        double r171735 = fabs(r171734);
        double r171736 = 3.0;
        double r171737 = pow(r171735, r171736);
        double r171738 = 0.2;
        double r171739 = 5.0;
        double r171740 = pow(r171735, r171739);
        double r171741 = 2.0;
        double r171742 = 0.047619047619047616;
        double r171743 = 7.0;
        double r171744 = pow(r171735, r171743);
        double r171745 = r171742 * r171744;
        double r171746 = fma(r171741, r171735, r171745);
        double r171747 = fma(r171738, r171740, r171746);
        double r171748 = fma(r171733, r171737, r171747);
        double r171749 = r171732 * r171748;
        double r171750 = fabs(r171749);
        return r171750;
}

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}{1 \cdot \left(\sqrt{\frac{1}{\pi}} \cdot \left(0.66666666666666663 \cdot {\left(\left|x\right|\right)}^{3} + \left(0.20000000000000001 \cdot {\left(\left|x\right|\right)}^{5} + \left(2 \cdot \left|x\right| + 0.047619047619047616 \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right)\right)}\right|\]
  3. Simplified0.2

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

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

Reproduce

herbie shell --seed 2020060 +o rules:numerics
(FPCore (x)
  :name "Jmat.Real.erfi, branch x less than or equal to 0.5"
  :precision binary64
  (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)))))))