Average Error: 0.2 → 0.2
Time: 8.7s
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 r188654 = 1.0;
        double r188655 = atan2(1.0, 0.0);
        double r188656 = sqrt(r188655);
        double r188657 = r188654 / r188656;
        double r188658 = 2.0;
        double r188659 = x;
        double r188660 = fabs(r188659);
        double r188661 = r188658 * r188660;
        double r188662 = 3.0;
        double r188663 = r188658 / r188662;
        double r188664 = r188660 * r188660;
        double r188665 = r188664 * r188660;
        double r188666 = r188663 * r188665;
        double r188667 = r188661 + r188666;
        double r188668 = 5.0;
        double r188669 = r188654 / r188668;
        double r188670 = r188665 * r188660;
        double r188671 = r188670 * r188660;
        double r188672 = r188669 * r188671;
        double r188673 = r188667 + r188672;
        double r188674 = 21.0;
        double r188675 = r188654 / r188674;
        double r188676 = r188671 * r188660;
        double r188677 = r188676 * r188660;
        double r188678 = r188675 * r188677;
        double r188679 = r188673 + r188678;
        double r188680 = r188657 * r188679;
        double r188681 = fabs(r188680);
        return r188681;
}

double f(double x) {
        double r188682 = 1.0;
        double r188683 = 1.0;
        double r188684 = atan2(1.0, 0.0);
        double r188685 = r188683 / r188684;
        double r188686 = sqrt(r188685);
        double r188687 = 0.6666666666666666;
        double r188688 = x;
        double r188689 = fabs(r188688);
        double r188690 = 3.0;
        double r188691 = pow(r188689, r188690);
        double r188692 = r188687 * r188691;
        double r188693 = 0.2;
        double r188694 = 5.0;
        double r188695 = pow(r188689, r188694);
        double r188696 = r188693 * r188695;
        double r188697 = 2.0;
        double r188698 = r188697 * r188689;
        double r188699 = 0.047619047619047616;
        double r188700 = 7.0;
        double r188701 = pow(r188689, r188700);
        double r188702 = r188699 * r188701;
        double r188703 = r188698 + r188702;
        double r188704 = r188696 + r188703;
        double r188705 = r188692 + r188704;
        double r188706 = r188686 * r188705;
        double r188707 = r188682 * r188706;
        double r188708 = fabs(r188707);
        return r188708;
}

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 2020089 
(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)))))))