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 r172920 = 1.0;
double r172921 = 0.3275911;
double r172922 = x;
double r172923 = fabs(r172922);
double r172924 = r172921 * r172923;
double r172925 = r172920 + r172924;
double r172926 = r172920 / r172925;
double r172927 = 0.254829592;
double r172928 = -0.284496736;
double r172929 = 1.421413741;
double r172930 = -1.453152027;
double r172931 = 1.061405429;
double r172932 = r172926 * r172931;
double r172933 = r172930 + r172932;
double r172934 = r172926 * r172933;
double r172935 = r172929 + r172934;
double r172936 = r172926 * r172935;
double r172937 = r172928 + r172936;
double r172938 = r172926 * r172937;
double r172939 = r172927 + r172938;
double r172940 = r172926 * r172939;
double r172941 = r172923 * r172923;
double r172942 = -r172941;
double r172943 = exp(r172942);
double r172944 = r172940 * r172943;
double r172945 = r172920 - r172944;
return r172945;
}
double f(double x) {
double r172946 = 1.0;
double r172947 = 0.3275911;
double r172948 = x;
double r172949 = fabs(r172948);
double r172950 = r172947 * r172949;
double r172951 = r172946 + r172950;
double r172952 = r172946 / r172951;
double r172953 = 1.061405429;
double r172954 = -1.453152027;
double r172955 = fma(r172952, r172953, r172954);
double r172956 = 1.421413741;
double r172957 = fma(r172952, r172955, r172956);
double r172958 = -0.284496736;
double r172959 = fma(r172952, r172957, r172958);
double r172960 = 0.254829592;
double r172961 = fma(r172952, r172959, r172960);
double r172962 = r172949 * r172949;
double r172963 = exp(r172962);
double r172964 = r172961 / r172963;
double r172965 = -r172946;
double r172966 = fma(r172949, r172947, r172946);
double r172967 = r172965 / r172966;
double r172968 = fma(r172964, r172967, r172946);
double r172969 = exp(r172968);
double r172970 = log(r172969);
return r172970;
}



Bits error versus x
Initial program 13.9
Simplified13.9
rmApplied add-log-exp13.8
Final simplification13.8
herbie shell --seed 2020100 +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)))))))