Average Error: 0.2 → 0.2
Time: 25.0s
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|\left(\left(2 \cdot \left|x\right| + \frac{2}{3} \cdot {\left(\left|x\right|\right)}^{3}\right) + \left|x\right| \cdot \left(\frac{1}{5} \cdot {\left(\left|x\right|\right)}^{4} + \frac{1}{21} \cdot {\left(\left|x\right|\right)}^{6}\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|\left(\left(2 \cdot \left|x\right| + \frac{2}{3} \cdot {\left(\left|x\right|\right)}^{3}\right) + \left|x\right| \cdot \left(\frac{1}{5} \cdot {\left(\left|x\right|\right)}^{4} + \frac{1}{21} \cdot {\left(\left|x\right|\right)}^{6}\right)\right) \cdot \frac{1}{\sqrt{\pi}}\right|
double f(double x) {
        double r100753 = 1.0;
        double r100754 = atan2(1.0, 0.0);
        double r100755 = sqrt(r100754);
        double r100756 = r100753 / r100755;
        double r100757 = 2.0;
        double r100758 = x;
        double r100759 = fabs(r100758);
        double r100760 = r100757 * r100759;
        double r100761 = 3.0;
        double r100762 = r100757 / r100761;
        double r100763 = r100759 * r100759;
        double r100764 = r100763 * r100759;
        double r100765 = r100762 * r100764;
        double r100766 = r100760 + r100765;
        double r100767 = 5.0;
        double r100768 = r100753 / r100767;
        double r100769 = r100764 * r100759;
        double r100770 = r100769 * r100759;
        double r100771 = r100768 * r100770;
        double r100772 = r100766 + r100771;
        double r100773 = 21.0;
        double r100774 = r100753 / r100773;
        double r100775 = r100770 * r100759;
        double r100776 = r100775 * r100759;
        double r100777 = r100774 * r100776;
        double r100778 = r100772 + r100777;
        double r100779 = r100756 * r100778;
        double r100780 = fabs(r100779);
        return r100780;
}

double f(double x) {
        double r100781 = 2.0;
        double r100782 = x;
        double r100783 = fabs(r100782);
        double r100784 = r100781 * r100783;
        double r100785 = 3.0;
        double r100786 = r100781 / r100785;
        double r100787 = 3.0;
        double r100788 = pow(r100783, r100787);
        double r100789 = r100786 * r100788;
        double r100790 = r100784 + r100789;
        double r100791 = 1.0;
        double r100792 = 5.0;
        double r100793 = r100791 / r100792;
        double r100794 = 4.0;
        double r100795 = pow(r100783, r100794);
        double r100796 = r100793 * r100795;
        double r100797 = 21.0;
        double r100798 = r100791 / r100797;
        double r100799 = 6.0;
        double r100800 = pow(r100783, r100799);
        double r100801 = r100798 * r100800;
        double r100802 = r100796 + r100801;
        double r100803 = r100783 * r100802;
        double r100804 = r100790 + r100803;
        double r100805 = atan2(1.0, 0.0);
        double r100806 = sqrt(r100805);
        double r100807 = r100791 / r100806;
        double r100808 = r100804 * r100807;
        double r100809 = fabs(r100808);
        return r100809;
}

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

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

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

Reproduce

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