Average Error: 0.2 → 0.2
Time: 7.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|\left(1 \cdot \sqrt{\frac{1}{\pi}}\right) \cdot \mathsf{fma}\left(0.66666666666666663, {\left(\left|x\right|\right)}^{3}, 0.20000000000000001 \cdot {\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|\]
\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}, 0.20000000000000001 \cdot {\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|
double f(double x) {
        double r161445 = 1.0;
        double r161446 = atan2(1.0, 0.0);
        double r161447 = sqrt(r161446);
        double r161448 = r161445 / r161447;
        double r161449 = 2.0;
        double r161450 = x;
        double r161451 = fabs(r161450);
        double r161452 = r161449 * r161451;
        double r161453 = 3.0;
        double r161454 = r161449 / r161453;
        double r161455 = r161451 * r161451;
        double r161456 = r161455 * r161451;
        double r161457 = r161454 * r161456;
        double r161458 = r161452 + r161457;
        double r161459 = 5.0;
        double r161460 = r161445 / r161459;
        double r161461 = r161456 * r161451;
        double r161462 = r161461 * r161451;
        double r161463 = r161460 * r161462;
        double r161464 = r161458 + r161463;
        double r161465 = 21.0;
        double r161466 = r161445 / r161465;
        double r161467 = r161462 * r161451;
        double r161468 = r161467 * r161451;
        double r161469 = r161466 * r161468;
        double r161470 = r161464 + r161469;
        double r161471 = r161448 * r161470;
        double r161472 = fabs(r161471);
        return r161472;
}

double f(double x) {
        double r161473 = 1.0;
        double r161474 = 1.0;
        double r161475 = atan2(1.0, 0.0);
        double r161476 = r161474 / r161475;
        double r161477 = sqrt(r161476);
        double r161478 = r161473 * r161477;
        double r161479 = 0.6666666666666666;
        double r161480 = x;
        double r161481 = fabs(r161480);
        double r161482 = 3.0;
        double r161483 = pow(r161481, r161482);
        double r161484 = 0.2;
        double r161485 = 5.0;
        double r161486 = pow(r161481, r161485);
        double r161487 = r161484 * r161486;
        double r161488 = 2.0;
        double r161489 = 0.047619047619047616;
        double r161490 = 7.0;
        double r161491 = pow(r161481, r161490);
        double r161492 = r161489 * r161491;
        double r161493 = fma(r161488, r161481, r161492);
        double r161494 = r161487 + r161493;
        double r161495 = fma(r161479, r161483, r161494);
        double r161496 = r161478 * r161495;
        double r161497 = fabs(r161496);
        return r161497;
}

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. Using strategy rm
  5. Applied fma-udef0.2

    \[\leadsto \left|\left(1 \cdot \sqrt{\frac{1}{\pi}}\right) \cdot \mathsf{fma}\left(0.66666666666666663, {\left(\left|x\right|\right)}^{3}, \color{blue}{0.20000000000000001 \cdot {\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|\]
  6. 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}, 0.20000000000000001 \cdot {\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|\]

Reproduce

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