Average Error: 0.2 → 0.2
Time: 6.3s
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.66666666666666663, {\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(0.20000000000000001, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(2, \left|x\right|, 0.047619047619047616 \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.66666666666666663, {\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(0.20000000000000001, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(2, \left|x\right|, 0.047619047619047616 \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right)\right|
double f(double x) {
        double r223300 = 1.0;
        double r223301 = atan2(1.0, 0.0);
        double r223302 = sqrt(r223301);
        double r223303 = r223300 / r223302;
        double r223304 = 2.0;
        double r223305 = x;
        double r223306 = fabs(r223305);
        double r223307 = r223304 * r223306;
        double r223308 = 3.0;
        double r223309 = r223304 / r223308;
        double r223310 = r223306 * r223306;
        double r223311 = r223310 * r223306;
        double r223312 = r223309 * r223311;
        double r223313 = r223307 + r223312;
        double r223314 = 5.0;
        double r223315 = r223300 / r223314;
        double r223316 = r223311 * r223306;
        double r223317 = r223316 * r223306;
        double r223318 = r223315 * r223317;
        double r223319 = r223313 + r223318;
        double r223320 = 21.0;
        double r223321 = r223300 / r223320;
        double r223322 = r223317 * r223306;
        double r223323 = r223322 * r223306;
        double r223324 = r223321 * r223323;
        double r223325 = r223319 + r223324;
        double r223326 = r223303 * r223325;
        double r223327 = fabs(r223326);
        return r223327;
}

double f(double x) {
        double r223328 = 1.0;
        double r223329 = 1.0;
        double r223330 = atan2(1.0, 0.0);
        double r223331 = r223329 / r223330;
        double r223332 = sqrt(r223331);
        double r223333 = r223328 * r223332;
        double r223334 = 0.6666666666666666;
        double r223335 = x;
        double r223336 = fabs(r223335);
        double r223337 = 3.0;
        double r223338 = pow(r223336, r223337);
        double r223339 = 0.2;
        double r223340 = 5.0;
        double r223341 = pow(r223336, r223340);
        double r223342 = 2.0;
        double r223343 = 0.047619047619047616;
        double r223344 = 7.0;
        double r223345 = pow(r223336, r223344);
        double r223346 = r223343 * r223345;
        double r223347 = fma(r223342, r223336, r223346);
        double r223348 = fma(r223339, r223341, r223347);
        double r223349 = fma(r223334, r223338, r223348);
        double r223350 = r223333 * r223349;
        double r223351 = fabs(r223350);
        return r223351;
}

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.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. Simplified0.2

    \[\leadsto \left|\color{blue}{\left(1 \cdot \sqrt{\frac{1}{\pi}}\right) \cdot \mathsf{fma}\left(0.66666666666666663, {\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(0.20000000000000001, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(2, \left|x\right|, 0.047619047619047616 \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.66666666666666663, {\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(0.20000000000000001, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(2, \left|x\right|, 0.047619047619047616 \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right)\right|\]

Reproduce

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