Average Error: 0.2 → 0.2
Time: 1.2m
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|\sqrt{\frac{1}{\pi}} \cdot (\frac{1}{5} \cdot \left({\left(\left|x\right|\right)}^{5}\right) + \left((\left({\left(\left|x\right|\right)}^{7}\right) \cdot \frac{1}{21} + \left(\left|x\right| \cdot \left(\frac{2}{3} \cdot \left(\left|x\right| \cdot \left|x\right|\right) + 2\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|\sqrt{\frac{1}{\pi}} \cdot (\frac{1}{5} \cdot \left({\left(\left|x\right|\right)}^{5}\right) + \left((\left({\left(\left|x\right|\right)}^{7}\right) \cdot \frac{1}{21} + \left(\left|x\right| \cdot \left(\frac{2}{3} \cdot \left(\left|x\right| \cdot \left|x\right|\right) + 2\right)\right))_*\right))_*\right|
double f(double x) {
        double r28401895 = 1.0;
        double r28401896 = atan2(1.0, 0.0);
        double r28401897 = sqrt(r28401896);
        double r28401898 = r28401895 / r28401897;
        double r28401899 = 2.0;
        double r28401900 = x;
        double r28401901 = fabs(r28401900);
        double r28401902 = r28401899 * r28401901;
        double r28401903 = 3.0;
        double r28401904 = r28401899 / r28401903;
        double r28401905 = r28401901 * r28401901;
        double r28401906 = r28401905 * r28401901;
        double r28401907 = r28401904 * r28401906;
        double r28401908 = r28401902 + r28401907;
        double r28401909 = 5.0;
        double r28401910 = r28401895 / r28401909;
        double r28401911 = r28401906 * r28401901;
        double r28401912 = r28401911 * r28401901;
        double r28401913 = r28401910 * r28401912;
        double r28401914 = r28401908 + r28401913;
        double r28401915 = 21.0;
        double r28401916 = r28401895 / r28401915;
        double r28401917 = r28401912 * r28401901;
        double r28401918 = r28401917 * r28401901;
        double r28401919 = r28401916 * r28401918;
        double r28401920 = r28401914 + r28401919;
        double r28401921 = r28401898 * r28401920;
        double r28401922 = fabs(r28401921);
        return r28401922;
}

double f(double x) {
        double r28401923 = 1.0;
        double r28401924 = atan2(1.0, 0.0);
        double r28401925 = r28401923 / r28401924;
        double r28401926 = sqrt(r28401925);
        double r28401927 = 0.2;
        double r28401928 = x;
        double r28401929 = fabs(r28401928);
        double r28401930 = 5.0;
        double r28401931 = pow(r28401929, r28401930);
        double r28401932 = 7.0;
        double r28401933 = pow(r28401929, r28401932);
        double r28401934 = 0.047619047619047616;
        double r28401935 = 0.6666666666666666;
        double r28401936 = r28401929 * r28401929;
        double r28401937 = r28401935 * r28401936;
        double r28401938 = 2.0;
        double r28401939 = r28401937 + r28401938;
        double r28401940 = r28401929 * r28401939;
        double r28401941 = fma(r28401933, r28401934, r28401940);
        double r28401942 = fma(r28401927, r28401931, r28401941);
        double r28401943 = r28401926 * r28401942;
        double r28401944 = fabs(r28401943);
        return r28401944;
}

Error

Bits error versus x

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 inf 0.2

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

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

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

Reproduce

herbie shell --seed 2019104 +o rules:numerics
(FPCore (x)
  :name "Jmat.Real.erfi, branch x less than or equal to 0.5"
  (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)))))))