Average Error: 0.2 → 0.2
Time: 28.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|\left(1 \cdot \sqrt{\frac{1}{\pi}}\right) \cdot \mathsf{fma}\left(0.6666666666666666296592325124947819858789, {\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(0.2000000000000000111022302462515654042363, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(2, \left|x\right|, 0.04761904761904761640423089374962728470564 \cdot {\left(\left|x\right|\right)}^{7}\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|\left(1 \cdot \sqrt{\frac{1}{\pi}}\right) \cdot \mathsf{fma}\left(0.6666666666666666296592325124947819858789, {\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(0.2000000000000000111022302462515654042363, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(2, \left|x\right|, 0.04761904761904761640423089374962728470564 \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right)\right|
double f(double x) {
        double r103022 = 1.0;
        double r103023 = atan2(1.0, 0.0);
        double r103024 = sqrt(r103023);
        double r103025 = r103022 / r103024;
        double r103026 = 2.0;
        double r103027 = x;
        double r103028 = fabs(r103027);
        double r103029 = r103026 * r103028;
        double r103030 = 3.0;
        double r103031 = r103026 / r103030;
        double r103032 = r103028 * r103028;
        double r103033 = r103032 * r103028;
        double r103034 = r103031 * r103033;
        double r103035 = r103029 + r103034;
        double r103036 = 5.0;
        double r103037 = r103022 / r103036;
        double r103038 = r103033 * r103028;
        double r103039 = r103038 * r103028;
        double r103040 = r103037 * r103039;
        double r103041 = r103035 + r103040;
        double r103042 = 21.0;
        double r103043 = r103022 / r103042;
        double r103044 = r103039 * r103028;
        double r103045 = r103044 * r103028;
        double r103046 = r103043 * r103045;
        double r103047 = r103041 + r103046;
        double r103048 = r103025 * r103047;
        double r103049 = fabs(r103048);
        return r103049;
}

double f(double x) {
        double r103050 = 1.0;
        double r103051 = 1.0;
        double r103052 = atan2(1.0, 0.0);
        double r103053 = r103051 / r103052;
        double r103054 = sqrt(r103053);
        double r103055 = r103050 * r103054;
        double r103056 = 0.6666666666666666;
        double r103057 = x;
        double r103058 = fabs(r103057);
        double r103059 = 3.0;
        double r103060 = pow(r103058, r103059);
        double r103061 = 0.2;
        double r103062 = 5.0;
        double r103063 = pow(r103058, r103062);
        double r103064 = 2.0;
        double r103065 = 0.047619047619047616;
        double r103066 = 7.0;
        double r103067 = pow(r103058, r103066);
        double r103068 = r103065 * r103067;
        double r103069 = fma(r103064, r103058, r103068);
        double r103070 = fma(r103061, r103063, r103069);
        double r103071 = fma(r103056, r103060, r103070);
        double r103072 = r103055 * r103071;
        double r103073 = fabs(r103072);
        return r103073;
}

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

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

    \[\leadsto \left|\color{blue}{\left(1 \cdot \sqrt{\frac{1}{\pi}}\right) \cdot \mathsf{fma}\left(0.6666666666666666296592325124947819858789, {\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(0.2000000000000000111022302462515654042363, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(2, \left|x\right|, 0.04761904761904761640423089374962728470564 \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right)}\right|\]
  4. Final simplification0.2

    \[\leadsto \left|\left(1 \cdot \sqrt{\frac{1}{\pi}}\right) \cdot \mathsf{fma}\left(0.6666666666666666296592325124947819858789, {\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(0.2000000000000000111022302462515654042363, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(2, \left|x\right|, 0.04761904761904761640423089374962728470564 \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right)\right|\]

Reproduce

herbie shell --seed 2019326 +o rules:numerics
(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)))))))