Average Error: 0.2 → 0.2
Time: 22.0s
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 \left|x\right|\right) \cdot \left(\sqrt{\frac{1}{\pi}} \cdot \mathsf{fma}\left(\left(\left|x\right| \cdot \left(\left|x\right| \cdot \left|x\right|\right)\right) \cdot \left(\left|x\right| \cdot \left(\left|x\right| \cdot \left|x\right|\right)\right), 0.04761904761904761640423089374962728470564, \mathsf{fma}\left(0.2000000000000000111022302462515654042363, \left(\left|x\right| \cdot \left|x\right|\right) \cdot \left(\left|x\right| \cdot \left|x\right|\right), \mathsf{fma}\left(0.6666666666666666296592325124947819858789, \left|x\right| \cdot \left|x\right|, 2\right)\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 \left|x\right|\right) \cdot \left(\sqrt{\frac{1}{\pi}} \cdot \mathsf{fma}\left(\left(\left|x\right| \cdot \left(\left|x\right| \cdot \left|x\right|\right)\right) \cdot \left(\left|x\right| \cdot \left(\left|x\right| \cdot \left|x\right|\right)\right), 0.04761904761904761640423089374962728470564, \mathsf{fma}\left(0.2000000000000000111022302462515654042363, \left(\left|x\right| \cdot \left|x\right|\right) \cdot \left(\left|x\right| \cdot \left|x\right|\right), \mathsf{fma}\left(0.6666666666666666296592325124947819858789, \left|x\right| \cdot \left|x\right|, 2\right)\right)\right)\right)\right|
double f(double x) {
        double r5723133 = 1.0;
        double r5723134 = atan2(1.0, 0.0);
        double r5723135 = sqrt(r5723134);
        double r5723136 = r5723133 / r5723135;
        double r5723137 = 2.0;
        double r5723138 = x;
        double r5723139 = fabs(r5723138);
        double r5723140 = r5723137 * r5723139;
        double r5723141 = 3.0;
        double r5723142 = r5723137 / r5723141;
        double r5723143 = r5723139 * r5723139;
        double r5723144 = r5723143 * r5723139;
        double r5723145 = r5723142 * r5723144;
        double r5723146 = r5723140 + r5723145;
        double r5723147 = 5.0;
        double r5723148 = r5723133 / r5723147;
        double r5723149 = r5723144 * r5723139;
        double r5723150 = r5723149 * r5723139;
        double r5723151 = r5723148 * r5723150;
        double r5723152 = r5723146 + r5723151;
        double r5723153 = 21.0;
        double r5723154 = r5723133 / r5723153;
        double r5723155 = r5723150 * r5723139;
        double r5723156 = r5723155 * r5723139;
        double r5723157 = r5723154 * r5723156;
        double r5723158 = r5723152 + r5723157;
        double r5723159 = r5723136 * r5723158;
        double r5723160 = fabs(r5723159);
        return r5723160;
}

double f(double x) {
        double r5723161 = 1.0;
        double r5723162 = x;
        double r5723163 = fabs(r5723162);
        double r5723164 = r5723161 * r5723163;
        double r5723165 = 1.0;
        double r5723166 = atan2(1.0, 0.0);
        double r5723167 = r5723165 / r5723166;
        double r5723168 = sqrt(r5723167);
        double r5723169 = r5723163 * r5723163;
        double r5723170 = r5723163 * r5723169;
        double r5723171 = r5723170 * r5723170;
        double r5723172 = 0.047619047619047616;
        double r5723173 = 0.2;
        double r5723174 = r5723169 * r5723169;
        double r5723175 = 0.6666666666666666;
        double r5723176 = 2.0;
        double r5723177 = fma(r5723175, r5723169, r5723176);
        double r5723178 = fma(r5723173, r5723174, r5723177);
        double r5723179 = fma(r5723171, r5723172, r5723178);
        double r5723180 = r5723168 * r5723179;
        double r5723181 = r5723164 * r5723180;
        double r5723182 = fabs(r5723181);
        return r5723182;
}

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

    \[\leadsto \color{blue}{\left|\frac{1}{\sqrt{\pi}} \cdot \left(\left|x\right| \cdot \mathsf{fma}\left(\left|x\right| \cdot \left|x\right|, \left(\left|x\right| \cdot \left|x\right|\right) \cdot \left(\frac{1}{5} + \left(\left|x\right| \cdot \left|x\right|\right) \cdot \frac{1}{21}\right), \mathsf{fma}\left(\frac{2}{3}, \left|x\right| \cdot \left|x\right|, 2\right)\right)\right)\right|}\]
  3. Using strategy rm
  4. Applied associate-*r/0.2

    \[\leadsto \left|\frac{1}{\sqrt{\pi}} \cdot \left(\left|x\right| \cdot \mathsf{fma}\left(\left|x\right| \cdot \left|x\right|, \left(\left|x\right| \cdot \left|x\right|\right) \cdot \left(\frac{1}{5} + \color{blue}{\frac{\left(\left|x\right| \cdot \left|x\right|\right) \cdot 1}{21}}\right), \mathsf{fma}\left(\frac{2}{3}, \left|x\right| \cdot \left|x\right|, 2\right)\right)\right)\right|\]
  5. Taylor expanded around 0 0.2

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

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

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

Reproduce

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