\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 48.83361325535265251573946443386375904083:\\
\;\;\;\;\frac{0.6666666666666667406815349750104360282421 \cdot {x}^{3} + \left(2 - 1 \cdot {x}^{2}\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\sqrt[3]{\frac{\frac{1}{\varepsilon} + 1}{e^{\left(1 - \varepsilon\right) \cdot x}}} \cdot \sqrt[3]{\frac{\frac{1}{\varepsilon} + 1}{e^{\left(1 - \varepsilon\right) \cdot x}}}\right) \cdot \sqrt[3]{\frac{\frac{1}{\varepsilon} + 1}{e^{\left(1 - \varepsilon\right) \cdot x}}} - \frac{\frac{1}{\varepsilon} - 1}{e^{\left(1 + \varepsilon\right) \cdot x}}}{2}\\
\end{array}double f(double x, double eps) {
double r34365 = 1.0;
double r34366 = eps;
double r34367 = r34365 / r34366;
double r34368 = r34365 + r34367;
double r34369 = r34365 - r34366;
double r34370 = x;
double r34371 = r34369 * r34370;
double r34372 = -r34371;
double r34373 = exp(r34372);
double r34374 = r34368 * r34373;
double r34375 = r34367 - r34365;
double r34376 = r34365 + r34366;
double r34377 = r34376 * r34370;
double r34378 = -r34377;
double r34379 = exp(r34378);
double r34380 = r34375 * r34379;
double r34381 = r34374 - r34380;
double r34382 = 2.0;
double r34383 = r34381 / r34382;
return r34383;
}
double f(double x, double eps) {
double r34384 = x;
double r34385 = 48.83361325535265;
bool r34386 = r34384 <= r34385;
double r34387 = 0.6666666666666667;
double r34388 = 3.0;
double r34389 = pow(r34384, r34388);
double r34390 = r34387 * r34389;
double r34391 = 2.0;
double r34392 = 1.0;
double r34393 = 2.0;
double r34394 = pow(r34384, r34393);
double r34395 = r34392 * r34394;
double r34396 = r34391 - r34395;
double r34397 = r34390 + r34396;
double r34398 = r34397 / r34391;
double r34399 = eps;
double r34400 = r34392 / r34399;
double r34401 = r34400 + r34392;
double r34402 = r34392 - r34399;
double r34403 = r34402 * r34384;
double r34404 = exp(r34403);
double r34405 = r34401 / r34404;
double r34406 = cbrt(r34405);
double r34407 = r34406 * r34406;
double r34408 = r34407 * r34406;
double r34409 = r34400 - r34392;
double r34410 = r34392 + r34399;
double r34411 = r34410 * r34384;
double r34412 = exp(r34411);
double r34413 = r34409 / r34412;
double r34414 = r34408 - r34413;
double r34415 = r34414 / r34391;
double r34416 = r34386 ? r34398 : r34415;
return r34416;
}



Bits error versus x



Bits error versus eps
Results
if x < 48.83361325535265Initial program 38.7
Simplified38.7
Taylor expanded around 0 1.4
rmApplied associate--l+1.4
if 48.83361325535265 < x Initial program 0.3
Simplified0.3
rmApplied add-cube-cbrt0.3
Final simplification1.2
herbie shell --seed 2019208
(FPCore (x eps)
:name "NMSE Section 6.1 mentioned, A"
:precision binary64
(/ (- (* (+ 1 (/ 1 eps)) (exp (- (* (- 1 eps) x)))) (* (- (/ 1 eps) 1) (exp (- (* (+ 1 eps) x))))) 2))