Average Error: 0.2 → 0.2
Time: 22.9s
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|\frac{1}{\sqrt{\pi}} \cdot \left(\left(1 \cdot \left(\frac{{\left(\left|x\right|\right)}^{7}}{21} + \frac{{\left(\left|x\right|\right)}^{5}}{5}\right) + 2 \cdot \left(\frac{{\left(\left|x\right|\right)}^{3}}{3} + \left|x\right|\right)\right) \cdot 1\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|\frac{1}{\sqrt{\pi}} \cdot \left(\left(1 \cdot \left(\frac{{\left(\left|x\right|\right)}^{7}}{21} + \frac{{\left(\left|x\right|\right)}^{5}}{5}\right) + 2 \cdot \left(\frac{{\left(\left|x\right|\right)}^{3}}{3} + \left|x\right|\right)\right) \cdot 1\right)\right|
double f(double x) {
        double r122401 = 1.0;
        double r122402 = atan2(1.0, 0.0);
        double r122403 = sqrt(r122402);
        double r122404 = r122401 / r122403;
        double r122405 = 2.0;
        double r122406 = x;
        double r122407 = fabs(r122406);
        double r122408 = r122405 * r122407;
        double r122409 = 3.0;
        double r122410 = r122405 / r122409;
        double r122411 = r122407 * r122407;
        double r122412 = r122411 * r122407;
        double r122413 = r122410 * r122412;
        double r122414 = r122408 + r122413;
        double r122415 = 5.0;
        double r122416 = r122401 / r122415;
        double r122417 = r122412 * r122407;
        double r122418 = r122417 * r122407;
        double r122419 = r122416 * r122418;
        double r122420 = r122414 + r122419;
        double r122421 = 21.0;
        double r122422 = r122401 / r122421;
        double r122423 = r122418 * r122407;
        double r122424 = r122423 * r122407;
        double r122425 = r122422 * r122424;
        double r122426 = r122420 + r122425;
        double r122427 = r122404 * r122426;
        double r122428 = fabs(r122427);
        return r122428;
}

double f(double x) {
        double r122429 = 1.0;
        double r122430 = atan2(1.0, 0.0);
        double r122431 = sqrt(r122430);
        double r122432 = r122429 / r122431;
        double r122433 = 1.0;
        double r122434 = x;
        double r122435 = fabs(r122434);
        double r122436 = 7.0;
        double r122437 = pow(r122435, r122436);
        double r122438 = 21.0;
        double r122439 = r122437 / r122438;
        double r122440 = 5.0;
        double r122441 = pow(r122435, r122440);
        double r122442 = 5.0;
        double r122443 = r122441 / r122442;
        double r122444 = r122439 + r122443;
        double r122445 = r122433 * r122444;
        double r122446 = 2.0;
        double r122447 = 3.0;
        double r122448 = pow(r122435, r122447);
        double r122449 = 3.0;
        double r122450 = r122448 / r122449;
        double r122451 = r122450 + r122435;
        double r122452 = r122446 * r122451;
        double r122453 = r122445 + r122452;
        double r122454 = r122453 * r122433;
        double r122455 = r122432 * r122454;
        double r122456 = fabs(r122455);
        return r122456;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

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.6

    \[\leadsto \color{blue}{\left|\frac{1 \cdot \left(\frac{{\left(\left|x\right|\right)}^{7}}{21} + \frac{{\left(\left|x\right|\right)}^{5}}{5}\right) + 2 \cdot \left(\frac{{\left(\left|x\right|\right)}^{3}}{3} + \left|x\right|\right)}{\frac{\sqrt{\pi}}{1}}\right|}\]
  3. Using strategy rm
  4. Applied div-inv0.6

    \[\leadsto \left|\frac{1 \cdot \left(\frac{{\left(\left|x\right|\right)}^{7}}{21} + \frac{{\left(\left|x\right|\right)}^{5}}{5}\right) + 2 \cdot \left(\frac{{\left(\left|x\right|\right)}^{3}}{3} + \left|x\right|\right)}{\color{blue}{\sqrt{\pi} \cdot \frac{1}{1}}}\right|\]
  5. Applied *-un-lft-identity0.6

    \[\leadsto \left|\frac{\color{blue}{1 \cdot \left(1 \cdot \left(\frac{{\left(\left|x\right|\right)}^{7}}{21} + \frac{{\left(\left|x\right|\right)}^{5}}{5}\right) + 2 \cdot \left(\frac{{\left(\left|x\right|\right)}^{3}}{3} + \left|x\right|\right)\right)}}{\sqrt{\pi} \cdot \frac{1}{1}}\right|\]
  6. Applied times-frac0.2

    \[\leadsto \left|\color{blue}{\frac{1}{\sqrt{\pi}} \cdot \frac{1 \cdot \left(\frac{{\left(\left|x\right|\right)}^{7}}{21} + \frac{{\left(\left|x\right|\right)}^{5}}{5}\right) + 2 \cdot \left(\frac{{\left(\left|x\right|\right)}^{3}}{3} + \left|x\right|\right)}{\frac{1}{1}}}\right|\]
  7. Simplified0.2

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

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

Reproduce

herbie shell --seed 2019323 
(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)))))))