\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{\mathsf{fma}\left({\left(\left|x\right|\right)}^{7}, \frac{1}{21}, \mathsf{fma}\left(\left|x\right|, \mathsf{fma}\left({\left(\left|x\right|\right)}^{4}, \frac{1}{5}, 2\right), \frac{2}{\frac{3}{{\left(\left|x\right|\right)}^{3}}}\right)\right)}{\frac{\sqrt{\sqrt{\pi}} \cdot \sqrt{\sqrt{\pi}}}{1}}\right|double f(double x) {
double r96986 = 1.0;
double r96987 = atan2(1.0, 0.0);
double r96988 = sqrt(r96987);
double r96989 = r96986 / r96988;
double r96990 = 2.0;
double r96991 = x;
double r96992 = fabs(r96991);
double r96993 = r96990 * r96992;
double r96994 = 3.0;
double r96995 = r96990 / r96994;
double r96996 = r96992 * r96992;
double r96997 = r96996 * r96992;
double r96998 = r96995 * r96997;
double r96999 = r96993 + r96998;
double r97000 = 5.0;
double r97001 = r96986 / r97000;
double r97002 = r96997 * r96992;
double r97003 = r97002 * r96992;
double r97004 = r97001 * r97003;
double r97005 = r96999 + r97004;
double r97006 = 21.0;
double r97007 = r96986 / r97006;
double r97008 = r97003 * r96992;
double r97009 = r97008 * r96992;
double r97010 = r97007 * r97009;
double r97011 = r97005 + r97010;
double r97012 = r96989 * r97011;
double r97013 = fabs(r97012);
return r97013;
}
double f(double x) {
double r97014 = x;
double r97015 = fabs(r97014);
double r97016 = 7.0;
double r97017 = pow(r97015, r97016);
double r97018 = 1.0;
double r97019 = 21.0;
double r97020 = r97018 / r97019;
double r97021 = 4.0;
double r97022 = pow(r97015, r97021);
double r97023 = 5.0;
double r97024 = r97018 / r97023;
double r97025 = 2.0;
double r97026 = fma(r97022, r97024, r97025);
double r97027 = 3.0;
double r97028 = 3.0;
double r97029 = pow(r97015, r97028);
double r97030 = r97027 / r97029;
double r97031 = r97025 / r97030;
double r97032 = fma(r97015, r97026, r97031);
double r97033 = fma(r97017, r97020, r97032);
double r97034 = atan2(1.0, 0.0);
double r97035 = sqrt(r97034);
double r97036 = sqrt(r97035);
double r97037 = r97036 * r97036;
double r97038 = r97037 / r97018;
double r97039 = r97033 / r97038;
double r97040 = fabs(r97039);
return r97040;
}



Bits error versus x
Initial program 0.2
Simplified0.6
rmApplied add-sqr-sqrt0.6
Applied sqrt-prod0.4
Final simplification0.4
herbie shell --seed 2019304 +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)))))))