1 - \left(\frac{1}{1 + 0.32759110000000002 \cdot \left|x\right|} \cdot \left(0.25482959199999999 + \frac{1}{1 + 0.32759110000000002 \cdot \left|x\right|} \cdot \left(-0.284496735999999972 + \frac{1}{1 + 0.32759110000000002 \cdot \left|x\right|} \cdot \left(1.42141374100000006 + \frac{1}{1 + 0.32759110000000002 \cdot \left|x\right|} \cdot \left(-1.45315202700000001 + \frac{1}{1 + 0.32759110000000002 \cdot \left|x\right|} \cdot 1.0614054289999999\right)\right)\right)\right)\right) \cdot e^{-\left|x\right| \cdot \left|x\right|}\log \left(e^{\mathsf{fma}\left(\frac{\mathsf{fma}\left(\frac{1}{1 + 0.32759110000000002 \cdot \left|x\right|}, \mathsf{fma}\left(\frac{1}{1 + 0.32759110000000002 \cdot \left|x\right|}, \mathsf{fma}\left(\frac{1}{1 + 0.32759110000000002 \cdot \left|x\right|}, \mathsf{fma}\left(\frac{1}{1 + 0.32759110000000002 \cdot \left|x\right|}, 1.0614054289999999, -1.45315202700000001\right), 1.42141374100000006\right), -0.284496735999999972\right), 0.25482959199999999\right)}{e^{\left|x\right| \cdot \left|x\right|}}, \frac{-1}{\mathsf{fma}\left(\left|x\right|, 0.32759110000000002, 1\right)}, 1\right)}\right)double f(double x) {
double r131228 = 1.0;
double r131229 = 0.3275911;
double r131230 = x;
double r131231 = fabs(r131230);
double r131232 = r131229 * r131231;
double r131233 = r131228 + r131232;
double r131234 = r131228 / r131233;
double r131235 = 0.254829592;
double r131236 = -0.284496736;
double r131237 = 1.421413741;
double r131238 = -1.453152027;
double r131239 = 1.061405429;
double r131240 = r131234 * r131239;
double r131241 = r131238 + r131240;
double r131242 = r131234 * r131241;
double r131243 = r131237 + r131242;
double r131244 = r131234 * r131243;
double r131245 = r131236 + r131244;
double r131246 = r131234 * r131245;
double r131247 = r131235 + r131246;
double r131248 = r131234 * r131247;
double r131249 = r131231 * r131231;
double r131250 = -r131249;
double r131251 = exp(r131250);
double r131252 = r131248 * r131251;
double r131253 = r131228 - r131252;
return r131253;
}
double f(double x) {
double r131254 = 1.0;
double r131255 = 0.3275911;
double r131256 = x;
double r131257 = fabs(r131256);
double r131258 = r131255 * r131257;
double r131259 = r131254 + r131258;
double r131260 = r131254 / r131259;
double r131261 = 1.061405429;
double r131262 = -1.453152027;
double r131263 = fma(r131260, r131261, r131262);
double r131264 = 1.421413741;
double r131265 = fma(r131260, r131263, r131264);
double r131266 = -0.284496736;
double r131267 = fma(r131260, r131265, r131266);
double r131268 = 0.254829592;
double r131269 = fma(r131260, r131267, r131268);
double r131270 = r131257 * r131257;
double r131271 = exp(r131270);
double r131272 = r131269 / r131271;
double r131273 = -r131254;
double r131274 = fma(r131257, r131255, r131254);
double r131275 = r131273 / r131274;
double r131276 = fma(r131272, r131275, r131254);
double r131277 = exp(r131276);
double r131278 = log(r131277);
return r131278;
}



Bits error versus x
Initial program 13.8
Simplified13.8
rmApplied add-log-exp13.8
Final simplification13.8
herbie shell --seed 2020036 +o rules:numerics
(FPCore (x)
:name "Jmat.Real.erf"
:precision binary64
(- 1 (* (* (/ 1 (+ 1 (* 0.3275911 (fabs x)))) (+ 0.254829592 (* (/ 1 (+ 1 (* 0.3275911 (fabs x)))) (+ -0.284496736 (* (/ 1 (+ 1 (* 0.3275911 (fabs x)))) (+ 1.421413741 (* (/ 1 (+ 1 (* 0.3275911 (fabs x)))) (+ -1.453152027 (* (/ 1 (+ 1 (* 0.3275911 (fabs x)))) 1.061405429))))))))) (exp (- (* (fabs x) (fabs x)))))))