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|1 \cdot \left(\frac{1}{\sqrt{\pi}} \cdot \mathsf{fma}\left(\left|x\right|, 2, {\left(\left|x\right|\right)}^{3} \cdot \frac{2}{3}\right) + \frac{1}{\sqrt{\pi}} \cdot \mathsf{fma}\left(\left(\frac{1}{5} \cdot {\left(\left|x\right|\right)}^{3}\right) \cdot \left|x\right|, \left|x\right|, \left(\left({\left(\left|x\right|\right)}^{3} \cdot \left(\left|x\right| \cdot \left|x\right|\right)\right) \cdot \left(\left|x\right| \cdot \left|x\right|\right)\right) \cdot \frac{1}{21}\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|1 \cdot \left(\frac{1}{\sqrt{\pi}} \cdot \mathsf{fma}\left(\left|x\right|, 2, {\left(\left|x\right|\right)}^{3} \cdot \frac{2}{3}\right) + \frac{1}{\sqrt{\pi}} \cdot \mathsf{fma}\left(\left(\frac{1}{5} \cdot {\left(\left|x\right|\right)}^{3}\right) \cdot \left|x\right|, \left|x\right|, \left(\left({\left(\left|x\right|\right)}^{3} \cdot \left(\left|x\right| \cdot \left|x\right|\right)\right) \cdot \left(\left|x\right| \cdot \left|x\right|\right)\right) \cdot \frac{1}{21}\right)\right)\right|
double f(double x) {
        double r151578 = 1.0;
        double r151579 = atan2(1.0, 0.0);
        double r151580 = sqrt(r151579);
        double r151581 = r151578 / r151580;
        double r151582 = 2.0;
        double r151583 = x;
        double r151584 = fabs(r151583);
        double r151585 = r151582 * r151584;
        double r151586 = 3.0;
        double r151587 = r151582 / r151586;
        double r151588 = r151584 * r151584;
        double r151589 = r151588 * r151584;
        double r151590 = r151587 * r151589;
        double r151591 = r151585 + r151590;
        double r151592 = 5.0;
        double r151593 = r151578 / r151592;
        double r151594 = r151589 * r151584;
        double r151595 = r151594 * r151584;
        double r151596 = r151593 * r151595;
        double r151597 = r151591 + r151596;
        double r151598 = 21.0;
        double r151599 = r151578 / r151598;
        double r151600 = r151595 * r151584;
        double r151601 = r151600 * r151584;
        double r151602 = r151599 * r151601;
        double r151603 = r151597 + r151602;
        double r151604 = r151581 * r151603;
        double r151605 = fabs(r151604);
        return r151605;
}

double f(double x) {
        double r151606 = 1.0;
        double r151607 = 1.0;
        double r151608 = atan2(1.0, 0.0);
        double r151609 = sqrt(r151608);
        double r151610 = r151607 / r151609;
        double r151611 = x;
        double r151612 = fabs(r151611);
        double r151613 = 2.0;
        double r151614 = 3.0;
        double r151615 = pow(r151612, r151614);
        double r151616 = 3.0;
        double r151617 = r151613 / r151616;
        double r151618 = r151615 * r151617;
        double r151619 = fma(r151612, r151613, r151618);
        double r151620 = r151610 * r151619;
        double r151621 = 5.0;
        double r151622 = r151606 / r151621;
        double r151623 = r151622 * r151615;
        double r151624 = r151623 * r151612;
        double r151625 = r151612 * r151612;
        double r151626 = r151615 * r151625;
        double r151627 = r151626 * r151625;
        double r151628 = 21.0;
        double r151629 = r151606 / r151628;
        double r151630 = r151627 * r151629;
        double r151631 = fma(r151624, r151612, r151630);
        double r151632 = r151610 * r151631;
        double r151633 = r151620 + r151632;
        double r151634 = r151606 * r151633;
        double r151635 = fabs(r151634);
        return r151635;
}

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. Using strategy rm
  3. Applied div-inv0.2

    \[\leadsto \left|\color{blue}{\left(1 \cdot \frac{1}{\sqrt{\pi}}\right)} \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|\]
  4. Applied associate-*l*0.2

    \[\leadsto \left|\color{blue}{1 \cdot \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)}\right|\]
  5. Simplified0.2

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

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

Reproduce

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