Average Error: 0.2 → 0.2
Time: 6.1s
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 r167892 = 1.0;
        double r167893 = atan2(1.0, 0.0);
        double r167894 = sqrt(r167893);
        double r167895 = r167892 / r167894;
        double r167896 = 2.0;
        double r167897 = x;
        double r167898 = fabs(r167897);
        double r167899 = r167896 * r167898;
        double r167900 = 3.0;
        double r167901 = r167896 / r167900;
        double r167902 = r167898 * r167898;
        double r167903 = r167902 * r167898;
        double r167904 = r167901 * r167903;
        double r167905 = r167899 + r167904;
        double r167906 = 5.0;
        double r167907 = r167892 / r167906;
        double r167908 = r167903 * r167898;
        double r167909 = r167908 * r167898;
        double r167910 = r167907 * r167909;
        double r167911 = r167905 + r167910;
        double r167912 = 21.0;
        double r167913 = r167892 / r167912;
        double r167914 = r167909 * r167898;
        double r167915 = r167914 * r167898;
        double r167916 = r167913 * r167915;
        double r167917 = r167911 + r167916;
        double r167918 = r167895 * r167917;
        double r167919 = fabs(r167918);
        return r167919;
}

double f(double x) {
        double r167920 = 1.0;
        double r167921 = 1.0;
        double r167922 = atan2(1.0, 0.0);
        double r167923 = r167921 / r167922;
        double r167924 = sqrt(r167923);
        double r167925 = 0.6666666666666666;
        double r167926 = x;
        double r167927 = fabs(r167926);
        double r167928 = 3.0;
        double r167929 = pow(r167927, r167928);
        double r167930 = r167925 * r167929;
        double r167931 = 0.2;
        double r167932 = 5.0;
        double r167933 = pow(r167927, r167932);
        double r167934 = r167931 * r167933;
        double r167935 = 2.0;
        double r167936 = r167935 * r167927;
        double r167937 = 0.047619047619047616;
        double r167938 = 7.0;
        double r167939 = pow(r167927, r167938);
        double r167940 = r167937 * r167939;
        double r167941 = r167936 + r167940;
        double r167942 = r167934 + r167941;
        double r167943 = r167930 + r167942;
        double r167944 = r167924 * r167943;
        double r167945 = r167920 * r167944;
        double r167946 = fabs(r167945);
        return r167946;
}

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