\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|\mathsf{fma}\left({\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(\frac{1}{5}, \left|x\right| \cdot \left|x\right|, \frac{2}{3}\right), \left|x\right| \cdot \mathsf{fma}\left({\left(\left|x\right|\right)}^{6}, \frac{1}{21}, 2\right)\right) \cdot \frac{1}{\sqrt{\pi}}\right|double f(double x) {
double r193378 = 1.0;
double r193379 = atan2(1.0, 0.0);
double r193380 = sqrt(r193379);
double r193381 = r193378 / r193380;
double r193382 = 2.0;
double r193383 = x;
double r193384 = fabs(r193383);
double r193385 = r193382 * r193384;
double r193386 = 3.0;
double r193387 = r193382 / r193386;
double r193388 = r193384 * r193384;
double r193389 = r193388 * r193384;
double r193390 = r193387 * r193389;
double r193391 = r193385 + r193390;
double r193392 = 5.0;
double r193393 = r193378 / r193392;
double r193394 = r193389 * r193384;
double r193395 = r193394 * r193384;
double r193396 = r193393 * r193395;
double r193397 = r193391 + r193396;
double r193398 = 21.0;
double r193399 = r193378 / r193398;
double r193400 = r193395 * r193384;
double r193401 = r193400 * r193384;
double r193402 = r193399 * r193401;
double r193403 = r193397 + r193402;
double r193404 = r193381 * r193403;
double r193405 = fabs(r193404);
return r193405;
}
double f(double x) {
double r193406 = x;
double r193407 = fabs(r193406);
double r193408 = 3.0;
double r193409 = pow(r193407, r193408);
double r193410 = 1.0;
double r193411 = 5.0;
double r193412 = r193410 / r193411;
double r193413 = r193407 * r193407;
double r193414 = 2.0;
double r193415 = 3.0;
double r193416 = r193414 / r193415;
double r193417 = fma(r193412, r193413, r193416);
double r193418 = 6.0;
double r193419 = pow(r193407, r193418);
double r193420 = 21.0;
double r193421 = r193410 / r193420;
double r193422 = fma(r193419, r193421, r193414);
double r193423 = r193407 * r193422;
double r193424 = fma(r193409, r193417, r193423);
double r193425 = atan2(1.0, 0.0);
double r193426 = sqrt(r193425);
double r193427 = r193410 / r193426;
double r193428 = r193424 * r193427;
double r193429 = fabs(r193428);
return r193429;
}



Bits error versus x
Initial program 0.2
Simplified0.2
Final simplification0.2
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)))))))