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|}\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{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt{\mathsf{fma}\left(\left|x\right|, 0.3275911000000000239396058532292954623699, 1\right)}} \cdot \frac{\sqrt[3]{1}}{\sqrt{\mathsf{fma}\left(\left|x\right|, 0.3275911000000000239396058532292954623699, 1\right)}}, 1.061405428999999900341322245367337018251, -1.453152027000000012790792425221297889948\right), 1.421413741000000063863240029604639858007\right), \sqrt{\frac{1}{\mathsf{fma}\left(\left|x\right|, 0.3275911000000000239396058532292954623699, 1\right)}} \cdot \sqrt{\frac{1}{\mathsf{fma}\left(\left|x\right|, 0.3275911000000000239396058532292954623699, 1\right)}}, -0.2844967359999999723108032867457950487733\right), 0.2548295919999999936678136691625695675611\right)}{e^{\left|x\right| \cdot \left|x\right|}}, 1\right)double f(double x) {
double r120895 = 1.0;
double r120896 = 0.3275911;
double r120897 = x;
double r120898 = fabs(r120897);
double r120899 = r120896 * r120898;
double r120900 = r120895 + r120899;
double r120901 = r120895 / r120900;
double r120902 = 0.254829592;
double r120903 = -0.284496736;
double r120904 = 1.421413741;
double r120905 = -1.453152027;
double r120906 = 1.061405429;
double r120907 = r120901 * r120906;
double r120908 = r120905 + r120907;
double r120909 = r120901 * r120908;
double r120910 = r120904 + r120909;
double r120911 = r120901 * r120910;
double r120912 = r120903 + r120911;
double r120913 = r120901 * r120912;
double r120914 = r120902 + r120913;
double r120915 = r120901 * r120914;
double r120916 = r120898 * r120898;
double r120917 = -r120916;
double r120918 = exp(r120917);
double r120919 = r120915 * r120918;
double r120920 = r120895 - r120919;
return r120920;
}
double f(double x) {
double r120921 = 1.0;
double r120922 = x;
double r120923 = fabs(r120922);
double r120924 = 0.3275911;
double r120925 = fma(r120923, r120924, r120921);
double r120926 = r120921 / r120925;
double r120927 = cbrt(r120921);
double r120928 = r120927 * r120927;
double r120929 = sqrt(r120925);
double r120930 = r120928 / r120929;
double r120931 = r120927 / r120929;
double r120932 = r120930 * r120931;
double r120933 = 1.061405429;
double r120934 = -1.453152027;
double r120935 = fma(r120932, r120933, r120934);
double r120936 = 1.421413741;
double r120937 = fma(r120926, r120935, r120936);
double r120938 = sqrt(r120926);
double r120939 = r120938 * r120938;
double r120940 = -0.284496736;
double r120941 = fma(r120937, r120939, r120940);
double r120942 = 0.254829592;
double r120943 = fma(r120926, r120941, r120942);
double r120944 = r120923 * r120923;
double r120945 = exp(r120944);
double r120946 = r120943 / r120945;
double r120947 = -r120946;
double r120948 = fma(r120926, r120947, r120921);
return r120948;
}



Bits error versus x
Initial program 13.7
Simplified13.7
rmApplied add-sqr-sqrt13.7
Applied add-cube-cbrt13.7
Applied times-frac13.7
rmApplied add-sqr-sqrt13.7
Final simplification13.7
herbie shell --seed 2019209 +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)))))))