Average Error: 0.2 → 0.2
Time: 7.8s
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| + 0.047619047619047616 \cdot {\left(\left|x\right|\right)}^{7}\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| + 0.047619047619047616 \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right)\right)\right|
double f(double x) {
        double r169326 = 1.0;
        double r169327 = atan2(1.0, 0.0);
        double r169328 = sqrt(r169327);
        double r169329 = r169326 / r169328;
        double r169330 = 2.0;
        double r169331 = x;
        double r169332 = fabs(r169331);
        double r169333 = r169330 * r169332;
        double r169334 = 3.0;
        double r169335 = r169330 / r169334;
        double r169336 = r169332 * r169332;
        double r169337 = r169336 * r169332;
        double r169338 = r169335 * r169337;
        double r169339 = r169333 + r169338;
        double r169340 = 5.0;
        double r169341 = r169326 / r169340;
        double r169342 = r169337 * r169332;
        double r169343 = r169342 * r169332;
        double r169344 = r169341 * r169343;
        double r169345 = r169339 + r169344;
        double r169346 = 21.0;
        double r169347 = r169326 / r169346;
        double r169348 = r169343 * r169332;
        double r169349 = r169348 * r169332;
        double r169350 = r169347 * r169349;
        double r169351 = r169345 + r169350;
        double r169352 = r169329 * r169351;
        double r169353 = fabs(r169352);
        return r169353;
}

double f(double x) {
        double r169354 = 1.0;
        double r169355 = 1.0;
        double r169356 = atan2(1.0, 0.0);
        double r169357 = r169355 / r169356;
        double r169358 = sqrt(r169357);
        double r169359 = 0.6666666666666666;
        double r169360 = x;
        double r169361 = fabs(r169360);
        double r169362 = 3.0;
        double r169363 = pow(r169361, r169362);
        double r169364 = r169359 * r169363;
        double r169365 = 0.2;
        double r169366 = 5.0;
        double r169367 = pow(r169361, r169366);
        double r169368 = r169365 * r169367;
        double r169369 = 2.0;
        double r169370 = r169369 * r169361;
        double r169371 = 0.047619047619047616;
        double r169372 = 7.0;
        double r169373 = pow(r169361, r169372);
        double r169374 = r169371 * r169373;
        double r169375 = r169370 + r169374;
        double r169376 = r169368 + r169375;
        double r169377 = r169364 + r169376;
        double r169378 = r169358 * r169377;
        double r169379 = r169354 * r169378;
        double r169380 = fabs(r169379);
        return r169380;
}

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

Reproduce

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