\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 355.4869306141758:\\
\;\;\;\;\frac{2 - \left(\left(\left(x \cdot x\right) \cdot x\right) \cdot \frac{-2}{3} + x \cdot x\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{\left(e^{\left(-1 + \varepsilon\right) \cdot x} + \frac{e^{\left(-1 + \varepsilon\right) \cdot x}}{\varepsilon}\right) - \left(\frac{e^{x \cdot \left(-1 - \varepsilon\right)}}{\varepsilon} - e^{x \cdot \left(-1 - \varepsilon\right)}\right)} \cdot \left(\sqrt[3]{\left(e^{\left(-1 + \varepsilon\right) \cdot x} + \frac{e^{\left(-1 + \varepsilon\right) \cdot x}}{\varepsilon}\right) - \left(\frac{e^{x \cdot \left(-1 - \varepsilon\right)}}{\varepsilon} - e^{x \cdot \left(-1 - \varepsilon\right)}\right)} \cdot \sqrt[3]{\left(e^{\left(-1 + \varepsilon\right) \cdot x} + \frac{e^{\left(-1 + \varepsilon\right) \cdot x}}{\varepsilon}\right) - \left(\frac{e^{x \cdot \left(-1 - \varepsilon\right)}}{\varepsilon} - e^{x \cdot \left(-1 - \varepsilon\right)}\right)}\right)}{2}\\
\end{array}double f(double x, double eps) {
double r3754358 = 1.0;
double r3754359 = eps;
double r3754360 = r3754358 / r3754359;
double r3754361 = r3754358 + r3754360;
double r3754362 = r3754358 - r3754359;
double r3754363 = x;
double r3754364 = r3754362 * r3754363;
double r3754365 = -r3754364;
double r3754366 = exp(r3754365);
double r3754367 = r3754361 * r3754366;
double r3754368 = r3754360 - r3754358;
double r3754369 = r3754358 + r3754359;
double r3754370 = r3754369 * r3754363;
double r3754371 = -r3754370;
double r3754372 = exp(r3754371);
double r3754373 = r3754368 * r3754372;
double r3754374 = r3754367 - r3754373;
double r3754375 = 2.0;
double r3754376 = r3754374 / r3754375;
return r3754376;
}
double f(double x, double eps) {
double r3754377 = x;
double r3754378 = 355.4869306141758;
bool r3754379 = r3754377 <= r3754378;
double r3754380 = 2.0;
double r3754381 = r3754377 * r3754377;
double r3754382 = r3754381 * r3754377;
double r3754383 = -0.6666666666666666;
double r3754384 = r3754382 * r3754383;
double r3754385 = r3754384 + r3754381;
double r3754386 = r3754380 - r3754385;
double r3754387 = r3754386 / r3754380;
double r3754388 = -1.0;
double r3754389 = eps;
double r3754390 = r3754388 + r3754389;
double r3754391 = r3754390 * r3754377;
double r3754392 = exp(r3754391);
double r3754393 = r3754392 / r3754389;
double r3754394 = r3754392 + r3754393;
double r3754395 = r3754388 - r3754389;
double r3754396 = r3754377 * r3754395;
double r3754397 = exp(r3754396);
double r3754398 = r3754397 / r3754389;
double r3754399 = r3754398 - r3754397;
double r3754400 = r3754394 - r3754399;
double r3754401 = cbrt(r3754400);
double r3754402 = r3754401 * r3754401;
double r3754403 = r3754401 * r3754402;
double r3754404 = r3754403 / r3754380;
double r3754405 = r3754379 ? r3754387 : r3754404;
return r3754405;
}



Bits error versus x



Bits error versus eps
Results
if x < 355.4869306141758Initial program 39.2
Simplified39.2
Taylor expanded around 0 1.2
Simplified1.2
rmApplied associate--l-1.2
if 355.4869306141758 < x Initial program 0.0
Simplified0.0
rmApplied add-cube-cbrt0.0
Final simplification0.9
herbie shell --seed 2019104
(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))