Average Error: 0.2 → 0.1
Time: 39.8s
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|\frac{1 \cdot \left({\left(\left|x\right|\right)}^{6} \cdot \left(\frac{1}{21} \cdot \left|x\right|\right)\right)}{\sqrt{\pi}} + \frac{1}{\sqrt{\pi}} \cdot \mathsf{fma}\left(\left|x\right|, 2, \mathsf{fma}\left(\frac{2}{3}, {\left(\left|x\right|\right)}^{3}, {\left(\left|x\right|\right)}^{4} \cdot \left(\frac{1}{5} \cdot \left|x\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|\frac{1 \cdot \left({\left(\left|x\right|\right)}^{6} \cdot \left(\frac{1}{21} \cdot \left|x\right|\right)\right)}{\sqrt{\pi}} + \frac{1}{\sqrt{\pi}} \cdot \mathsf{fma}\left(\left|x\right|, 2, \mathsf{fma}\left(\frac{2}{3}, {\left(\left|x\right|\right)}^{3}, {\left(\left|x\right|\right)}^{4} \cdot \left(\frac{1}{5} \cdot \left|x\right|\right)\right)\right)\right|
double f(double x) {
        double r102289 = 1.0;
        double r102290 = atan2(1.0, 0.0);
        double r102291 = sqrt(r102290);
        double r102292 = r102289 / r102291;
        double r102293 = 2.0;
        double r102294 = x;
        double r102295 = fabs(r102294);
        double r102296 = r102293 * r102295;
        double r102297 = 3.0;
        double r102298 = r102293 / r102297;
        double r102299 = r102295 * r102295;
        double r102300 = r102299 * r102295;
        double r102301 = r102298 * r102300;
        double r102302 = r102296 + r102301;
        double r102303 = 5.0;
        double r102304 = r102289 / r102303;
        double r102305 = r102300 * r102295;
        double r102306 = r102305 * r102295;
        double r102307 = r102304 * r102306;
        double r102308 = r102302 + r102307;
        double r102309 = 21.0;
        double r102310 = r102289 / r102309;
        double r102311 = r102306 * r102295;
        double r102312 = r102311 * r102295;
        double r102313 = r102310 * r102312;
        double r102314 = r102308 + r102313;
        double r102315 = r102292 * r102314;
        double r102316 = fabs(r102315);
        return r102316;
}

double f(double x) {
        double r102317 = 1.0;
        double r102318 = x;
        double r102319 = fabs(r102318);
        double r102320 = 6.0;
        double r102321 = pow(r102319, r102320);
        double r102322 = 21.0;
        double r102323 = r102317 / r102322;
        double r102324 = r102323 * r102319;
        double r102325 = r102321 * r102324;
        double r102326 = r102317 * r102325;
        double r102327 = atan2(1.0, 0.0);
        double r102328 = sqrt(r102327);
        double r102329 = r102326 / r102328;
        double r102330 = r102317 / r102328;
        double r102331 = 2.0;
        double r102332 = 3.0;
        double r102333 = r102331 / r102332;
        double r102334 = 3.0;
        double r102335 = pow(r102319, r102334);
        double r102336 = 4.0;
        double r102337 = pow(r102319, r102336);
        double r102338 = 5.0;
        double r102339 = r102317 / r102338;
        double r102340 = r102339 * r102319;
        double r102341 = r102337 * r102340;
        double r102342 = fma(r102333, r102335, r102341);
        double r102343 = fma(r102319, r102331, r102342);
        double r102344 = r102330 * r102343;
        double r102345 = r102329 + r102344;
        double r102346 = fabs(r102345);
        return r102346;
}

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. Using strategy rm
  3. Applied distribute-rgt-in0.2

    \[\leadsto \left|\color{blue}{\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) \cdot \frac{1}{\sqrt{\pi}} + \left(\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) \cdot \frac{1}{\sqrt{\pi}}}\right|\]
  4. Simplified0.2

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

    \[\leadsto \left|\frac{1}{\sqrt{\pi}} \cdot \mathsf{fma}\left(\left|x\right|, 2, \mathsf{fma}\left(\frac{2}{3}, {\left(\left|x\right|\right)}^{3}, \left(\frac{1}{5} \cdot \left|x\right|\right) \cdot {\left(\left|x\right|\right)}^{\left(3 + 1\right)}\right)\right) + \color{blue}{\frac{\left(\left(\frac{1}{21} \cdot \left|x\right|\right) \cdot {\left(\left|x\right|\right)}^{\left(2 \cdot 3\right)}\right) \cdot 1}{\sqrt{\pi}}}\right|\]
  6. Final simplification0.1

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

Reproduce

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