1 - \left(\frac{1}{1 + 0.3275911000000000239396058532292954623699 \cdot \left|x\right|} \cdot \left(0.2548295919999999936678136691625695675611 + \frac{1}{1 + 0.3275911000000000239396058532292954623699 \cdot \left|x\right|} \cdot \left(-0.2844967359999999723108032867457950487733 + \frac{1}{1 + 0.3275911000000000239396058532292954623699 \cdot \left|x\right|} \cdot \left(1.421413741000000063863240029604639858007 + \frac{1}{1 + 0.3275911000000000239396058532292954623699 \cdot \left|x\right|} \cdot \left(-1.453152027000000012790792425221297889948 + \frac{1}{1 + 0.3275911000000000239396058532292954623699 \cdot \left|x\right|} \cdot 1.061405428999999900341322245367337018251\right)\right)\right)\right)\right) \cdot e^{-\left|x\right| \cdot \left|x\right|}\log \left(e^{\mathsf{fma}\left(\frac{1}{\mathsf{fma}\left(\left|x\right|, 0.3275911000000000239396058532292954623699, 1\right)}, -\frac{\mathsf{fma}\left(\frac{1}{\mathsf{fma}\left(\left|x\right|, 0.3275911000000000239396058532292954623699, 1\right)}, \mathsf{fma}\left(\mathsf{fma}\left(\frac{1}{\mathsf{fma}\left(\left|x\right|, 0.3275911000000000239396058532292954623699, 1\right)}, \mathsf{fma}\left(\frac{1}{\mathsf{fma}\left(\left|x\right|, 0.3275911000000000239396058532292954623699, 1\right)}, 1.061405428999999900341322245367337018251, -1.453152027000000012790792425221297889948\right), 1.421413741000000063863240029604639858007\right), \frac{1}{\mathsf{fma}\left(\left|x\right|, 0.3275911000000000239396058532292954623699, 1\right)}, -0.2844967359999999723108032867457950487733\right), 0.2548295919999999936678136691625695675611\right)}{e^{{\left(\left|x\right|\right)}^{2}}}, 1\right)}\right)double f(double x) {
double r140470 = 1.0;
double r140471 = 0.3275911;
double r140472 = x;
double r140473 = fabs(r140472);
double r140474 = r140471 * r140473;
double r140475 = r140470 + r140474;
double r140476 = r140470 / r140475;
double r140477 = 0.254829592;
double r140478 = -0.284496736;
double r140479 = 1.421413741;
double r140480 = -1.453152027;
double r140481 = 1.061405429;
double r140482 = r140476 * r140481;
double r140483 = r140480 + r140482;
double r140484 = r140476 * r140483;
double r140485 = r140479 + r140484;
double r140486 = r140476 * r140485;
double r140487 = r140478 + r140486;
double r140488 = r140476 * r140487;
double r140489 = r140477 + r140488;
double r140490 = r140476 * r140489;
double r140491 = r140473 * r140473;
double r140492 = -r140491;
double r140493 = exp(r140492);
double r140494 = r140490 * r140493;
double r140495 = r140470 - r140494;
return r140495;
}
double f(double x) {
double r140496 = 1.0;
double r140497 = x;
double r140498 = fabs(r140497);
double r140499 = 0.3275911;
double r140500 = fma(r140498, r140499, r140496);
double r140501 = r140496 / r140500;
double r140502 = 1.061405429;
double r140503 = -1.453152027;
double r140504 = fma(r140501, r140502, r140503);
double r140505 = 1.421413741;
double r140506 = fma(r140501, r140504, r140505);
double r140507 = -0.284496736;
double r140508 = fma(r140506, r140501, r140507);
double r140509 = 0.254829592;
double r140510 = fma(r140501, r140508, r140509);
double r140511 = 2.0;
double r140512 = pow(r140498, r140511);
double r140513 = exp(r140512);
double r140514 = r140510 / r140513;
double r140515 = -r140514;
double r140516 = fma(r140501, r140515, r140496);
double r140517 = exp(r140516);
double r140518 = log(r140517);
return r140518;
}



Bits error versus x
Initial program 13.7
Simplified13.7
rmApplied add-log-exp13.7
Simplified13.7
Final simplification13.7
herbie shell --seed 2019212 +o rules:numerics
(FPCore (x)
:name "Jmat.Real.erf"
:precision binary64
(- 1 (* (* (/ 1 (+ 1 (* 0.32759110000000002 (fabs x)))) (+ 0.25482959199999999 (* (/ 1 (+ 1 (* 0.32759110000000002 (fabs x)))) (+ -0.284496735999999972 (* (/ 1 (+ 1 (* 0.32759110000000002 (fabs x)))) (+ 1.42141374100000006 (* (/ 1 (+ 1 (* 0.32759110000000002 (fabs x)))) (+ -1.45315202700000001 (* (/ 1 (+ 1 (* 0.32759110000000002 (fabs x)))) 1.0614054289999999))))))))) (exp (- (* (fabs x) (fabs x)))))))