1 - \left(\frac{1}{1 + 0.3275911 \cdot \left|x\right|} \cdot \left(0.254829592 + \frac{1}{1 + 0.3275911 \cdot \left|x\right|} \cdot \left(-0.284496736 + \frac{1}{1 + 0.3275911 \cdot \left|x\right|} \cdot \left(1.421413741 + \frac{1}{1 + 0.3275911 \cdot \left|x\right|} \cdot \left(-1.453152027 + \frac{1}{1 + 0.3275911 \cdot \left|x\right|} \cdot 1.061405429\right)\right)\right)\right)\right) \cdot e^{-\left|x\right| \cdot \left|x\right|}{e}^{\left(\log \left(\left(\left(\frac{\frac{0.284496736}{e^{\left|x\right| \cdot \left|x\right|}}}{\left(\left|x\right| \cdot 0.3275911 + 1\right) \cdot \left(\left|x\right| \cdot 0.3275911 + 1\right)} - \left(\frac{\frac{\frac{\frac{1.421413741}{\left|x\right| \cdot 0.3275911 + 1}}{\left|x\right| \cdot 0.3275911 + 1}}{\left|x\right| \cdot 0.3275911 + 1}}{e^{\left|x\right| \cdot \left|x\right|}} + \frac{0.254829592}{e^{\left|x\right| \cdot \left|x\right|} + \left(\left|x\right| \cdot 0.3275911\right) \cdot e^{\left|x\right| \cdot \left|x\right|}}\right)\right) - \frac{1.061405429}{{\left(\left|x\right| \cdot 0.3275911 + 1\right)}^{5} \cdot e^{\left|x\right| \cdot \left|x\right|}}\right) + \left(1 + \frac{\frac{\frac{1.453152027}{e^{\left|x\right| \cdot \left|x\right|}}}{\left(\left|x\right| \cdot 0.3275911 + 1\right) \cdot \left(\left|x\right| \cdot 0.3275911 + 1\right)}}{\left(\left|x\right| \cdot 0.3275911 + 1\right) \cdot \left(\left|x\right| \cdot 0.3275911 + 1\right)}\right)\right)\right)}double f(double x) {
double r7796252 = 1.0;
double r7796253 = 0.3275911;
double r7796254 = x;
double r7796255 = fabs(r7796254);
double r7796256 = r7796253 * r7796255;
double r7796257 = r7796252 + r7796256;
double r7796258 = r7796252 / r7796257;
double r7796259 = 0.254829592;
double r7796260 = -0.284496736;
double r7796261 = 1.421413741;
double r7796262 = -1.453152027;
double r7796263 = 1.061405429;
double r7796264 = r7796258 * r7796263;
double r7796265 = r7796262 + r7796264;
double r7796266 = r7796258 * r7796265;
double r7796267 = r7796261 + r7796266;
double r7796268 = r7796258 * r7796267;
double r7796269 = r7796260 + r7796268;
double r7796270 = r7796258 * r7796269;
double r7796271 = r7796259 + r7796270;
double r7796272 = r7796258 * r7796271;
double r7796273 = r7796255 * r7796255;
double r7796274 = -r7796273;
double r7796275 = exp(r7796274);
double r7796276 = r7796272 * r7796275;
double r7796277 = r7796252 - r7796276;
return r7796277;
}
double f(double x) {
double r7796278 = exp(1.0);
double r7796279 = 0.284496736;
double r7796280 = x;
double r7796281 = fabs(r7796280);
double r7796282 = r7796281 * r7796281;
double r7796283 = exp(r7796282);
double r7796284 = r7796279 / r7796283;
double r7796285 = 0.3275911;
double r7796286 = r7796281 * r7796285;
double r7796287 = 1.0;
double r7796288 = r7796286 + r7796287;
double r7796289 = r7796288 * r7796288;
double r7796290 = r7796284 / r7796289;
double r7796291 = 1.421413741;
double r7796292 = r7796291 / r7796288;
double r7796293 = r7796292 / r7796288;
double r7796294 = r7796293 / r7796288;
double r7796295 = r7796294 / r7796283;
double r7796296 = 0.254829592;
double r7796297 = r7796286 * r7796283;
double r7796298 = r7796283 + r7796297;
double r7796299 = r7796296 / r7796298;
double r7796300 = r7796295 + r7796299;
double r7796301 = r7796290 - r7796300;
double r7796302 = 1.061405429;
double r7796303 = 5.0;
double r7796304 = pow(r7796288, r7796303);
double r7796305 = r7796304 * r7796283;
double r7796306 = r7796302 / r7796305;
double r7796307 = r7796301 - r7796306;
double r7796308 = 1.453152027;
double r7796309 = r7796308 / r7796283;
double r7796310 = r7796309 / r7796289;
double r7796311 = r7796310 / r7796289;
double r7796312 = r7796287 + r7796311;
double r7796313 = r7796307 + r7796312;
double r7796314 = log(r7796313);
double r7796315 = pow(r7796278, r7796314);
return r7796315;
}



Bits error versus x
Results
Initial program 13.8
Simplified13.8
rmApplied add-log-exp13.8
Applied add-log-exp13.8
Applied diff-log14.5
Simplified13.8
Taylor expanded around 0 15.1
Simplified13.8
rmApplied add-exp-log13.8
rmApplied *-un-lft-identity13.8
Applied exp-prod13.8
Simplified13.8
Final simplification13.8
herbie shell --seed 2019138
(FPCore (x)
:name "Jmat.Real.erf"
(- 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)))))))