Average Error: 0.2 → 0.2
Time: 46.4s
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 \mathsf{fma}\left(\frac{1}{5}, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(\left|x\right|, 2, \mathsf{fma}\left(\frac{2}{3}, \left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|, \frac{1}{21} \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|\sqrt{\frac{1}{\pi}} \cdot \mathsf{fma}\left(\frac{1}{5}, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(\left|x\right|, 2, \mathsf{fma}\left(\frac{2}{3}, \left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|, \frac{1}{21} \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right)\right|
double f(double x) {
        double r5470204 = 1.0;
        double r5470205 = atan2(1.0, 0.0);
        double r5470206 = sqrt(r5470205);
        double r5470207 = r5470204 / r5470206;
        double r5470208 = 2.0;
        double r5470209 = x;
        double r5470210 = fabs(r5470209);
        double r5470211 = r5470208 * r5470210;
        double r5470212 = 3.0;
        double r5470213 = r5470208 / r5470212;
        double r5470214 = r5470210 * r5470210;
        double r5470215 = r5470214 * r5470210;
        double r5470216 = r5470213 * r5470215;
        double r5470217 = r5470211 + r5470216;
        double r5470218 = 5.0;
        double r5470219 = r5470204 / r5470218;
        double r5470220 = r5470215 * r5470210;
        double r5470221 = r5470220 * r5470210;
        double r5470222 = r5470219 * r5470221;
        double r5470223 = r5470217 + r5470222;
        double r5470224 = 21.0;
        double r5470225 = r5470204 / r5470224;
        double r5470226 = r5470221 * r5470210;
        double r5470227 = r5470226 * r5470210;
        double r5470228 = r5470225 * r5470227;
        double r5470229 = r5470223 + r5470228;
        double r5470230 = r5470207 * r5470229;
        double r5470231 = fabs(r5470230);
        return r5470231;
}

double f(double x) {
        double r5470232 = 1.0;
        double r5470233 = atan2(1.0, 0.0);
        double r5470234 = r5470232 / r5470233;
        double r5470235 = sqrt(r5470234);
        double r5470236 = 0.2;
        double r5470237 = x;
        double r5470238 = fabs(r5470237);
        double r5470239 = 5.0;
        double r5470240 = pow(r5470238, r5470239);
        double r5470241 = 2.0;
        double r5470242 = 0.6666666666666666;
        double r5470243 = r5470238 * r5470238;
        double r5470244 = r5470243 * r5470238;
        double r5470245 = 0.047619047619047616;
        double r5470246 = 7.0;
        double r5470247 = pow(r5470238, r5470246);
        double r5470248 = r5470245 * r5470247;
        double r5470249 = fma(r5470242, r5470244, r5470248);
        double r5470250 = fma(r5470238, r5470241, r5470249);
        double r5470251 = fma(r5470236, r5470240, r5470250);
        double r5470252 = r5470235 * r5470251;
        double r5470253 = fabs(r5470252);
        return r5470253;
}

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

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

Reproduce

herbie shell --seed 2019151 +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)))))))