\frac{\left(1.0 + \frac{1.0}{\varepsilon}\right) \cdot e^{-\left(1.0 - \varepsilon\right) \cdot x} - \left(\frac{1.0}{\varepsilon} - 1.0\right) \cdot e^{-\left(1.0 + \varepsilon\right) \cdot x}}{2.0}\begin{array}{l}
\mathbf{if}\;x \le 0.000489189965940405:\\
\;\;\;\;\frac{2.0 - \mathsf{fma}\left(1.0, x \cdot x, \log \left(e^{\left(x \cdot x\right) \cdot x}\right) \cdot \frac{2.7755575615628914 \cdot 10^{-17}}{\varepsilon}\right)}{2.0}\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(e^{x \cdot \left(\varepsilon - 1.0\right)}, \frac{1.0}{\varepsilon} + 1.0, \frac{\sqrt[3]{1.0 - \frac{1.0}{\varepsilon}}}{\sqrt{e^{x \cdot \left(\varepsilon + 1.0\right)}}} \cdot \frac{\sqrt[3]{1.0 - \frac{1.0}{\varepsilon}} \cdot \sqrt[3]{1.0 - \frac{1.0}{\varepsilon}}}{\sqrt{e^{x \cdot \left(\varepsilon + 1.0\right)}}}\right)}{2.0}\\
\end{array}double f(double x, double eps) {
double r2396393 = 1.0;
double r2396394 = eps;
double r2396395 = r2396393 / r2396394;
double r2396396 = r2396393 + r2396395;
double r2396397 = r2396393 - r2396394;
double r2396398 = x;
double r2396399 = r2396397 * r2396398;
double r2396400 = -r2396399;
double r2396401 = exp(r2396400);
double r2396402 = r2396396 * r2396401;
double r2396403 = r2396395 - r2396393;
double r2396404 = r2396393 + r2396394;
double r2396405 = r2396404 * r2396398;
double r2396406 = -r2396405;
double r2396407 = exp(r2396406);
double r2396408 = r2396403 * r2396407;
double r2396409 = r2396402 - r2396408;
double r2396410 = 2.0;
double r2396411 = r2396409 / r2396410;
return r2396411;
}
double f(double x, double eps) {
double r2396412 = x;
double r2396413 = 0.000489189965940405;
bool r2396414 = r2396412 <= r2396413;
double r2396415 = 2.0;
double r2396416 = 1.0;
double r2396417 = r2396412 * r2396412;
double r2396418 = r2396417 * r2396412;
double r2396419 = exp(r2396418);
double r2396420 = log(r2396419);
double r2396421 = 2.7755575615628914e-17;
double r2396422 = eps;
double r2396423 = r2396421 / r2396422;
double r2396424 = r2396420 * r2396423;
double r2396425 = fma(r2396416, r2396417, r2396424);
double r2396426 = r2396415 - r2396425;
double r2396427 = r2396426 / r2396415;
double r2396428 = r2396422 - r2396416;
double r2396429 = r2396412 * r2396428;
double r2396430 = exp(r2396429);
double r2396431 = r2396416 / r2396422;
double r2396432 = r2396431 + r2396416;
double r2396433 = r2396416 - r2396431;
double r2396434 = cbrt(r2396433);
double r2396435 = r2396422 + r2396416;
double r2396436 = r2396412 * r2396435;
double r2396437 = exp(r2396436);
double r2396438 = sqrt(r2396437);
double r2396439 = r2396434 / r2396438;
double r2396440 = r2396434 * r2396434;
double r2396441 = r2396440 / r2396438;
double r2396442 = r2396439 * r2396441;
double r2396443 = fma(r2396430, r2396432, r2396442);
double r2396444 = r2396443 / r2396415;
double r2396445 = r2396414 ? r2396427 : r2396444;
return r2396445;
}



Bits error versus x



Bits error versus eps
if x < 0.000489189965940405Initial program 37.7
Simplified37.7
Taylor expanded around 0 6.7
Simplified6.7
rmApplied add-log-exp1.3
if 0.000489189965940405 < x Initial program 1.1
Simplified1.1
rmApplied add-sqr-sqrt1.1
Applied add-cube-cbrt1.1
Applied times-frac1.1
Final simplification1.3
herbie shell --seed 2019165 +o rules:numerics
(FPCore (x eps)
:name "NMSE Section 6.1 mentioned, A"
(/ (- (* (+ 1.0 (/ 1.0 eps)) (exp (- (* (- 1.0 eps) x)))) (* (- (/ 1.0 eps) 1.0) (exp (- (* (+ 1.0 eps) x))))) 2.0))