\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 13.35324953554097504593300982378423213959:\\
\;\;\;\;1 + \log \left(e^{{x}^{2} \cdot \left(x \cdot 0.3333333333333333703407674875052180141211 - 0.5\right)}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{\sqrt[3]{e^{\left(1 - \varepsilon\right) \cdot x}} \cdot \sqrt[3]{e^{\left(1 - \varepsilon\right) \cdot x}}} \cdot \frac{1 + \frac{1}{\varepsilon}}{\sqrt[3]{e^{\left(1 - \varepsilon\right) \cdot x}}}}{2} - \frac{\frac{\frac{1}{\varepsilon} - 1}{e^{\left(1 + \varepsilon\right) \cdot x}}}{2}\\
\end{array}double f(double x, double eps) {
double r42380 = 1.0;
double r42381 = eps;
double r42382 = r42380 / r42381;
double r42383 = r42380 + r42382;
double r42384 = r42380 - r42381;
double r42385 = x;
double r42386 = r42384 * r42385;
double r42387 = -r42386;
double r42388 = exp(r42387);
double r42389 = r42383 * r42388;
double r42390 = r42382 - r42380;
double r42391 = r42380 + r42381;
double r42392 = r42391 * r42385;
double r42393 = -r42392;
double r42394 = exp(r42393);
double r42395 = r42390 * r42394;
double r42396 = r42389 - r42395;
double r42397 = 2.0;
double r42398 = r42396 / r42397;
return r42398;
}
double f(double x, double eps) {
double r42399 = x;
double r42400 = 13.353249535540975;
bool r42401 = r42399 <= r42400;
double r42402 = 1.0;
double r42403 = 2.0;
double r42404 = pow(r42399, r42403);
double r42405 = 0.33333333333333337;
double r42406 = r42399 * r42405;
double r42407 = 0.5;
double r42408 = r42406 - r42407;
double r42409 = r42404 * r42408;
double r42410 = exp(r42409);
double r42411 = log(r42410);
double r42412 = r42402 + r42411;
double r42413 = 1.0;
double r42414 = eps;
double r42415 = r42402 - r42414;
double r42416 = r42415 * r42399;
double r42417 = exp(r42416);
double r42418 = cbrt(r42417);
double r42419 = r42418 * r42418;
double r42420 = r42413 / r42419;
double r42421 = r42402 / r42414;
double r42422 = r42402 + r42421;
double r42423 = r42422 / r42418;
double r42424 = r42420 * r42423;
double r42425 = 2.0;
double r42426 = r42424 / r42425;
double r42427 = r42421 - r42402;
double r42428 = r42402 + r42414;
double r42429 = r42428 * r42399;
double r42430 = exp(r42429);
double r42431 = r42427 / r42430;
double r42432 = r42431 / r42425;
double r42433 = r42426 - r42432;
double r42434 = r42401 ? r42412 : r42433;
return r42434;
}



Bits error versus x



Bits error versus eps
Results
if x < 13.353249535540975Initial program 39.1
Simplified39.1
Taylor expanded around 0 1.3
Simplified1.3
rmApplied add-log-exp1.3
if 13.353249535540975 < x Initial program 0.4
Simplified0.4
rmApplied add-cube-cbrt0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Final simplification1.1
herbie shell --seed 2019308
(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))