\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 1.9449410912425849:\\
\;\;\;\;\frac{\left(2 - x \cdot x\right) - \frac{-2}{3} \cdot \left(\left(x \cdot x\right) \cdot x\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{x \cdot \left(-1 - \varepsilon\right)} + \left(\left(e^{\left(-1 + \varepsilon\right) \cdot x} + \frac{e^{\left(-1 + \varepsilon\right) \cdot x}}{\varepsilon}\right) - \frac{e^{x \cdot \left(-1 - \varepsilon\right)}}{\varepsilon}\right)}{2}\\
\end{array}double f(double x, double eps) {
double r4816367 = 1.0;
double r4816368 = eps;
double r4816369 = r4816367 / r4816368;
double r4816370 = r4816367 + r4816369;
double r4816371 = r4816367 - r4816368;
double r4816372 = x;
double r4816373 = r4816371 * r4816372;
double r4816374 = -r4816373;
double r4816375 = exp(r4816374);
double r4816376 = r4816370 * r4816375;
double r4816377 = r4816369 - r4816367;
double r4816378 = r4816367 + r4816368;
double r4816379 = r4816378 * r4816372;
double r4816380 = -r4816379;
double r4816381 = exp(r4816380);
double r4816382 = r4816377 * r4816381;
double r4816383 = r4816376 - r4816382;
double r4816384 = 2.0;
double r4816385 = r4816383 / r4816384;
return r4816385;
}
double f(double x, double eps) {
double r4816386 = x;
double r4816387 = 1.9449410912425849;
bool r4816388 = r4816386 <= r4816387;
double r4816389 = 2.0;
double r4816390 = r4816386 * r4816386;
double r4816391 = r4816389 - r4816390;
double r4816392 = -0.6666666666666666;
double r4816393 = r4816390 * r4816386;
double r4816394 = r4816392 * r4816393;
double r4816395 = r4816391 - r4816394;
double r4816396 = r4816395 / r4816389;
double r4816397 = -1.0;
double r4816398 = eps;
double r4816399 = r4816397 - r4816398;
double r4816400 = r4816386 * r4816399;
double r4816401 = exp(r4816400);
double r4816402 = r4816397 + r4816398;
double r4816403 = r4816402 * r4816386;
double r4816404 = exp(r4816403);
double r4816405 = r4816404 / r4816398;
double r4816406 = r4816404 + r4816405;
double r4816407 = r4816401 / r4816398;
double r4816408 = r4816406 - r4816407;
double r4816409 = r4816401 + r4816408;
double r4816410 = r4816409 / r4816389;
double r4816411 = r4816388 ? r4816396 : r4816410;
return r4816411;
}



Bits error versus x



Bits error versus eps
Results
if x < 1.9449410912425849Initial program 38.7
Simplified38.7
Taylor expanded around 0 1.4
Simplified1.4
if 1.9449410912425849 < x Initial program 0.7
Simplified0.7
rmApplied associate--r-0.6
Final simplification1.2
herbie shell --seed 2019107
(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))