\frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot e^{-\left(1 - \varepsilon\right) \cdot x} - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}\begin{array}{l}
\mathbf{if}\;x \le 200.38587470314786:\\
\;\;\;\;\frac{\left(2 + \left(\left(\frac{2}{3} \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) - x \cdot x}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{\log \left(\left(\frac{1}{\varepsilon} + 1\right) \cdot e^{\left(-\left(1 - \varepsilon\right)\right) \cdot x} - e^{\left(1 + \varepsilon\right) \cdot \left(-x\right)} \cdot \left(\frac{1}{\varepsilon} - 1\right)\right)}}{2}\\
\end{array}double f(double x, double eps) {
double r1666899 = 1.0;
double r1666900 = eps;
double r1666901 = r1666899 / r1666900;
double r1666902 = r1666899 + r1666901;
double r1666903 = r1666899 - r1666900;
double r1666904 = x;
double r1666905 = r1666903 * r1666904;
double r1666906 = -r1666905;
double r1666907 = exp(r1666906);
double r1666908 = r1666902 * r1666907;
double r1666909 = r1666901 - r1666899;
double r1666910 = r1666899 + r1666900;
double r1666911 = r1666910 * r1666904;
double r1666912 = -r1666911;
double r1666913 = exp(r1666912);
double r1666914 = r1666909 * r1666913;
double r1666915 = r1666908 - r1666914;
double r1666916 = 2.0;
double r1666917 = r1666915 / r1666916;
return r1666917;
}
double f(double x, double eps) {
double r1666918 = x;
double r1666919 = 200.38587470314786;
bool r1666920 = r1666918 <= r1666919;
double r1666921 = 2.0;
double r1666922 = 0.6666666666666666;
double r1666923 = r1666922 * r1666918;
double r1666924 = /* ERROR: no posit support in C */;
double r1666925 = /* ERROR: no posit support in C */;
double r1666926 = r1666918 * r1666918;
double r1666927 = r1666925 * r1666926;
double r1666928 = r1666921 + r1666927;
double r1666929 = r1666928 - r1666926;
double r1666930 = r1666929 / r1666921;
double r1666931 = 1.0;
double r1666932 = eps;
double r1666933 = r1666931 / r1666932;
double r1666934 = r1666933 + r1666931;
double r1666935 = r1666931 - r1666932;
double r1666936 = -r1666935;
double r1666937 = r1666936 * r1666918;
double r1666938 = exp(r1666937);
double r1666939 = r1666934 * r1666938;
double r1666940 = r1666931 + r1666932;
double r1666941 = -r1666918;
double r1666942 = r1666940 * r1666941;
double r1666943 = exp(r1666942);
double r1666944 = r1666933 - r1666931;
double r1666945 = r1666943 * r1666944;
double r1666946 = r1666939 - r1666945;
double r1666947 = log(r1666946);
double r1666948 = exp(r1666947);
double r1666949 = r1666948 / r1666921;
double r1666950 = r1666920 ? r1666930 : r1666949;
return r1666950;
}



Bits error versus x



Bits error versus eps
if x < 200.38587470314786Initial program 39.0
Taylor expanded around 0 1.4
Simplified1.4
Taylor expanded around 0 1.4
Simplified1.4
rmApplied insert-posit161.4
if 200.38587470314786 < x Initial program 0.2
rmApplied add-exp-log0.2
Final simplification1.1
herbie shell --seed 2019162
(FPCore (x eps)
:name "NMSE Section 6.1 mentioned, A"
(/ (- (* (+ 1 (/ 1 eps)) (exp (- (* (- 1 eps) x)))) (* (- (/ 1 eps) 1) (exp (- (* (+ 1 eps) x))))) 2))