Average Error: 0.2 → 0.2
Time: 15.5s
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({\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(\frac{1}{5}, \left|x\right| \cdot \left|x\right|, \frac{2}{3}\right), \left|x\right| \cdot \mathsf{fma}\left({\left(\left|x\right|\right)}^{6}, \frac{1}{21}, 2\right)\right) \cdot \frac{1}{\sqrt{\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({\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(\frac{1}{5}, \left|x\right| \cdot \left|x\right|, \frac{2}{3}\right), \left|x\right| \cdot \mathsf{fma}\left({\left(\left|x\right|\right)}^{6}, \frac{1}{21}, 2\right)\right) \cdot \frac{1}{\sqrt{\pi}}\right|
double f(double x) {
        double r193378 = 1.0;
        double r193379 = atan2(1.0, 0.0);
        double r193380 = sqrt(r193379);
        double r193381 = r193378 / r193380;
        double r193382 = 2.0;
        double r193383 = x;
        double r193384 = fabs(r193383);
        double r193385 = r193382 * r193384;
        double r193386 = 3.0;
        double r193387 = r193382 / r193386;
        double r193388 = r193384 * r193384;
        double r193389 = r193388 * r193384;
        double r193390 = r193387 * r193389;
        double r193391 = r193385 + r193390;
        double r193392 = 5.0;
        double r193393 = r193378 / r193392;
        double r193394 = r193389 * r193384;
        double r193395 = r193394 * r193384;
        double r193396 = r193393 * r193395;
        double r193397 = r193391 + r193396;
        double r193398 = 21.0;
        double r193399 = r193378 / r193398;
        double r193400 = r193395 * r193384;
        double r193401 = r193400 * r193384;
        double r193402 = r193399 * r193401;
        double r193403 = r193397 + r193402;
        double r193404 = r193381 * r193403;
        double r193405 = fabs(r193404);
        return r193405;
}

double f(double x) {
        double r193406 = x;
        double r193407 = fabs(r193406);
        double r193408 = 3.0;
        double r193409 = pow(r193407, r193408);
        double r193410 = 1.0;
        double r193411 = 5.0;
        double r193412 = r193410 / r193411;
        double r193413 = r193407 * r193407;
        double r193414 = 2.0;
        double r193415 = 3.0;
        double r193416 = r193414 / r193415;
        double r193417 = fma(r193412, r193413, r193416);
        double r193418 = 6.0;
        double r193419 = pow(r193407, r193418);
        double r193420 = 21.0;
        double r193421 = r193410 / r193420;
        double r193422 = fma(r193419, r193421, r193414);
        double r193423 = r193407 * r193422;
        double r193424 = fma(r193409, r193417, r193423);
        double r193425 = atan2(1.0, 0.0);
        double r193426 = sqrt(r193425);
        double r193427 = r193410 / r193426;
        double r193428 = r193424 * r193427;
        double r193429 = fabs(r193428);
        return r193429;
}

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. Simplified0.2

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

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

Reproduce

herbie shell --seed 2019174 +o rules:numerics
(FPCore (x)
  :name "Jmat.Real.erfi, branch x less than or equal to 0.5"
  (fabs (* (/ 1.0 (sqrt PI)) (+ (+ (+ (* 2.0 (fabs x)) (* (/ 2.0 3.0) (* (* (fabs x) (fabs x)) (fabs x)))) (* (/ 1.0 5.0) (* (* (* (* (fabs x) (fabs x)) (fabs x)) (fabs x)) (fabs x)))) (* (/ 1.0 21.0) (* (* (* (* (* (* (fabs x) (fabs x)) (fabs x)) (fabs x)) (fabs x)) (fabs x)) (fabs x)))))))