Average Error: 0.2 → 0.2
Time: 1.5m
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 \left(\mathsf{fma}\left(0.6666666666666666296592325124947819858789, \left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|, \mathsf{fma}\left({\left(\left|x\right|\right)}^{5}, 0.2000000000000000111022302462515654042363, \mathsf{fma}\left(0.04761904761904761640423089374962728470564, {\left(\left|x\right|\right)}^{7}, \left|x\right| \cdot 2\right)\right)\right) \cdot 1\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 \left(\mathsf{fma}\left(0.6666666666666666296592325124947819858789, \left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|, \mathsf{fma}\left({\left(\left|x\right|\right)}^{5}, 0.2000000000000000111022302462515654042363, \mathsf{fma}\left(0.04761904761904761640423089374962728470564, {\left(\left|x\right|\right)}^{7}, \left|x\right| \cdot 2\right)\right)\right) \cdot 1\right)\right|
double f(double x) {
        double r5673206 = 1.0;
        double r5673207 = atan2(1.0, 0.0);
        double r5673208 = sqrt(r5673207);
        double r5673209 = r5673206 / r5673208;
        double r5673210 = 2.0;
        double r5673211 = x;
        double r5673212 = fabs(r5673211);
        double r5673213 = r5673210 * r5673212;
        double r5673214 = 3.0;
        double r5673215 = r5673210 / r5673214;
        double r5673216 = r5673212 * r5673212;
        double r5673217 = r5673216 * r5673212;
        double r5673218 = r5673215 * r5673217;
        double r5673219 = r5673213 + r5673218;
        double r5673220 = 5.0;
        double r5673221 = r5673206 / r5673220;
        double r5673222 = r5673217 * r5673212;
        double r5673223 = r5673222 * r5673212;
        double r5673224 = r5673221 * r5673223;
        double r5673225 = r5673219 + r5673224;
        double r5673226 = 21.0;
        double r5673227 = r5673206 / r5673226;
        double r5673228 = r5673223 * r5673212;
        double r5673229 = r5673228 * r5673212;
        double r5673230 = r5673227 * r5673229;
        double r5673231 = r5673225 + r5673230;
        double r5673232 = r5673209 * r5673231;
        double r5673233 = fabs(r5673232);
        return r5673233;
}

double f(double x) {
        double r5673234 = 1.0;
        double r5673235 = atan2(1.0, 0.0);
        double r5673236 = r5673234 / r5673235;
        double r5673237 = sqrt(r5673236);
        double r5673238 = 0.6666666666666666;
        double r5673239 = x;
        double r5673240 = fabs(r5673239);
        double r5673241 = r5673240 * r5673240;
        double r5673242 = r5673241 * r5673240;
        double r5673243 = 5.0;
        double r5673244 = pow(r5673240, r5673243);
        double r5673245 = 0.2;
        double r5673246 = 0.047619047619047616;
        double r5673247 = 7.0;
        double r5673248 = pow(r5673240, r5673247);
        double r5673249 = 2.0;
        double r5673250 = r5673240 * r5673249;
        double r5673251 = fma(r5673246, r5673248, r5673250);
        double r5673252 = fma(r5673244, r5673245, r5673251);
        double r5673253 = fma(r5673238, r5673242, r5673252);
        double r5673254 = 1.0;
        double r5673255 = r5673253 * r5673254;
        double r5673256 = r5673237 * r5673255;
        double r5673257 = fabs(r5673256);
        return r5673257;
}

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}{\sqrt{\frac{1}{\pi}} \cdot \left(\mathsf{fma}\left(0.6666666666666666296592325124947819858789, \left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|, \mathsf{fma}\left({\left(\left|x\right|\right)}^{5}, 0.2000000000000000111022302462515654042363, \mathsf{fma}\left(0.04761904761904761640423089374962728470564, {\left(\left|x\right|\right)}^{7}, 2 \cdot \left|x\right|\right)\right)\right) \cdot 1\right)}\right|\]
  4. Final simplification0.2

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

Reproduce

herbie shell --seed 2019200 +o rules:numerics
(FPCore (x)
  :name "Jmat.Real.erfi, branch x less than or equal to 0.5"
  (fabs (* (/ 1.0 (sqrt PI)) (+ (+ (+ (* 2.0 (fabs x)) (* (/ 2.0 3.0) (* (* (fabs x) (fabs x)) (fabs x)))) (* (/ 1.0 5.0) (* (* (* (* (fabs x) (fabs x)) (fabs x)) (fabs x)) (fabs x)))) (* (/ 1.0 21.0) (* (* (* (* (* (* (fabs x) (fabs x)) (fabs x)) (fabs x)) (fabs x)) (fabs x)) (fabs x)))))))