Average Error: 0.2 → 0.2
Time: 7.4s
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(\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| + {\left(\left|x\right|\right)}^{7} \cdot 0.047619047619047616\right)\right)\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(\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| + {\left(\left|x\right|\right)}^{7} \cdot 0.047619047619047616\right)\right)\right)\right)\right|
double f(double x) {
        double r145417 = 1.0;
        double r145418 = atan2(1.0, 0.0);
        double r145419 = sqrt(r145418);
        double r145420 = r145417 / r145419;
        double r145421 = 2.0;
        double r145422 = x;
        double r145423 = fabs(r145422);
        double r145424 = r145421 * r145423;
        double r145425 = 3.0;
        double r145426 = r145421 / r145425;
        double r145427 = r145423 * r145423;
        double r145428 = r145427 * r145423;
        double r145429 = r145426 * r145428;
        double r145430 = r145424 + r145429;
        double r145431 = 5.0;
        double r145432 = r145417 / r145431;
        double r145433 = r145428 * r145423;
        double r145434 = r145433 * r145423;
        double r145435 = r145432 * r145434;
        double r145436 = r145430 + r145435;
        double r145437 = 21.0;
        double r145438 = r145417 / r145437;
        double r145439 = r145434 * r145423;
        double r145440 = r145439 * r145423;
        double r145441 = r145438 * r145440;
        double r145442 = r145436 + r145441;
        double r145443 = r145420 * r145442;
        double r145444 = fabs(r145443);
        return r145444;
}

double f(double x) {
        double r145445 = 1.0;
        double r145446 = 1.0;
        double r145447 = atan2(1.0, 0.0);
        double r145448 = r145446 / r145447;
        double r145449 = sqrt(r145448);
        double r145450 = 0.6666666666666666;
        double r145451 = x;
        double r145452 = fabs(r145451);
        double r145453 = 3.0;
        double r145454 = pow(r145452, r145453);
        double r145455 = r145450 * r145454;
        double r145456 = 0.2;
        double r145457 = 5.0;
        double r145458 = pow(r145452, r145457);
        double r145459 = r145456 * r145458;
        double r145460 = 2.0;
        double r145461 = r145460 * r145452;
        double r145462 = 7.0;
        double r145463 = pow(r145452, r145462);
        double r145464 = 0.047619047619047616;
        double r145465 = r145463 * r145464;
        double r145466 = r145461 + r145465;
        double r145467 = r145459 + r145466;
        double r145468 = r145455 + r145467;
        double r145469 = r145449 * r145468;
        double r145470 = r145445 * r145469;
        double r145471 = fabs(r145470);
        return r145471;
}

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. 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. Using strategy rm
  4. Applied *-commutative0.2

    \[\leadsto \left|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| + \color{blue}{{\left(\left|x\right|\right)}^{7} \cdot 0.047619047619047616}\right)\right)\right)\right)\right|\]
  5. Final simplification0.2

    \[\leadsto \left|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| + {\left(\left|x\right|\right)}^{7} \cdot 0.047619047619047616\right)\right)\right)\right)\right|\]

Reproduce

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