Average Error: 0.2 → 0.2
Time: 30.0s
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|1 \cdot \left(\mathsf{fma}\left(0.6666666666666666296592325124947819858789, {\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(0.2000000000000000111022302462515654042363, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(2, \left|x\right|, 0.04761904761904761640423089374962728470564 \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right) \cdot \sqrt{\frac{1}{\pi}}\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|1 \cdot \left(\mathsf{fma}\left(0.6666666666666666296592325124947819858789, {\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(0.2000000000000000111022302462515654042363, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(2, \left|x\right|, 0.04761904761904761640423089374962728470564 \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right) \cdot \sqrt{\frac{1}{\pi}}\right)\right|
double f(double x) {
        double r51690 = 1.0;
        double r51691 = atan2(1.0, 0.0);
        double r51692 = sqrt(r51691);
        double r51693 = r51690 / r51692;
        double r51694 = 2.0;
        double r51695 = x;
        double r51696 = fabs(r51695);
        double r51697 = r51694 * r51696;
        double r51698 = 3.0;
        double r51699 = r51694 / r51698;
        double r51700 = r51696 * r51696;
        double r51701 = r51700 * r51696;
        double r51702 = r51699 * r51701;
        double r51703 = r51697 + r51702;
        double r51704 = 5.0;
        double r51705 = r51690 / r51704;
        double r51706 = r51701 * r51696;
        double r51707 = r51706 * r51696;
        double r51708 = r51705 * r51707;
        double r51709 = r51703 + r51708;
        double r51710 = 21.0;
        double r51711 = r51690 / r51710;
        double r51712 = r51707 * r51696;
        double r51713 = r51712 * r51696;
        double r51714 = r51711 * r51713;
        double r51715 = r51709 + r51714;
        double r51716 = r51693 * r51715;
        double r51717 = fabs(r51716);
        return r51717;
}

double f(double x) {
        double r51718 = 1.0;
        double r51719 = 0.6666666666666666;
        double r51720 = x;
        double r51721 = fabs(r51720);
        double r51722 = 3.0;
        double r51723 = pow(r51721, r51722);
        double r51724 = 0.2;
        double r51725 = 5.0;
        double r51726 = pow(r51721, r51725);
        double r51727 = 2.0;
        double r51728 = 0.047619047619047616;
        double r51729 = 7.0;
        double r51730 = pow(r51721, r51729);
        double r51731 = r51728 * r51730;
        double r51732 = fma(r51727, r51721, r51731);
        double r51733 = fma(r51724, r51726, r51732);
        double r51734 = fma(r51719, r51723, r51733);
        double r51735 = 1.0;
        double r51736 = atan2(1.0, 0.0);
        double r51737 = r51735 / r51736;
        double r51738 = sqrt(r51737);
        double r51739 = r51734 * r51738;
        double r51740 = r51718 * r51739;
        double r51741 = fabs(r51740);
        return r51741;
}

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.6666666666666666296592325124947819858789 \cdot {\left(\left|x\right|\right)}^{3} + \left(0.2000000000000000111022302462515654042363 \cdot {\left(\left|x\right|\right)}^{5} + \left(2 \cdot \left|x\right| + 0.04761904761904761640423089374962728470564 \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right)\right)}\right|\]
  3. Simplified0.2

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

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

Reproduce

herbie shell --seed 2019315 +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)))))))