\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 \frac{168386002929493}{19807040628566084398385987584}:\\
\;\;\;\;1 + \left({x}^{2} \cdot \left(\left({\left(\sqrt[3]{\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}}\right)}^{4} \cdot \sqrt[3]{\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}}\right) \cdot \sqrt[3]{\sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}}\right)\right) \cdot \sqrt[3]{x \cdot \frac{3002399751580331}{9007199254740992} - \frac{1}{2}}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{\frac{1 + \frac{1}{\varepsilon}}{e^{\left(1 - \varepsilon\right) \cdot x}}}{2} - \frac{\frac{\frac{1}{\varepsilon}}{e^{\left(1 + \varepsilon\right) \cdot x}}}{2}\right) + \frac{\frac{1}{e^{\left(1 + \varepsilon\right) \cdot x}}}{2}\\
\end{array}double f(double x, double eps) {
double r41465 = 1.0;
double r41466 = eps;
double r41467 = r41465 / r41466;
double r41468 = r41465 + r41467;
double r41469 = r41465 - r41466;
double r41470 = x;
double r41471 = r41469 * r41470;
double r41472 = -r41471;
double r41473 = exp(r41472);
double r41474 = r41468 * r41473;
double r41475 = r41467 - r41465;
double r41476 = r41465 + r41466;
double r41477 = r41476 * r41470;
double r41478 = -r41477;
double r41479 = exp(r41478);
double r41480 = r41475 * r41479;
double r41481 = r41474 - r41480;
double r41482 = 2.0;
double r41483 = r41481 / r41482;
return r41483;
}
double f(double x, double eps) {
double r41484 = x;
double r41485 = 168386002929493.0;
double r41486 = 1.9807040628566084e+28;
double r41487 = r41485 / r41486;
bool r41488 = r41484 <= r41487;
double r41489 = 1.0;
double r41490 = 2.0;
double r41491 = pow(r41484, r41490);
double r41492 = 3002399751580331.0;
double r41493 = 9007199254740992.0;
double r41494 = r41492 / r41493;
double r41495 = r41484 * r41494;
double r41496 = 2.0;
double r41497 = r41489 / r41496;
double r41498 = r41495 - r41497;
double r41499 = cbrt(r41498);
double r41500 = cbrt(r41499);
double r41501 = 4.0;
double r41502 = pow(r41500, r41501);
double r41503 = r41502 * r41500;
double r41504 = r41503 * r41500;
double r41505 = r41491 * r41504;
double r41506 = r41505 * r41499;
double r41507 = r41489 + r41506;
double r41508 = eps;
double r41509 = r41489 / r41508;
double r41510 = r41489 + r41509;
double r41511 = r41489 - r41508;
double r41512 = r41511 * r41484;
double r41513 = exp(r41512);
double r41514 = r41510 / r41513;
double r41515 = r41514 / r41496;
double r41516 = r41489 + r41508;
double r41517 = r41516 * r41484;
double r41518 = exp(r41517);
double r41519 = r41509 / r41518;
double r41520 = r41519 / r41496;
double r41521 = r41515 - r41520;
double r41522 = r41489 / r41518;
double r41523 = r41522 / r41496;
double r41524 = r41521 + r41523;
double r41525 = r41488 ? r41507 : r41524;
return r41525;
}



Bits error versus x



Bits error versus eps
Results
if x < 8.501320620640499e-15Initial program 38.9
Simplified38.9
Taylor expanded around 0 1.1
Simplified1.1
rmApplied add-cube-cbrt1.1
Applied associate-*r*1.1
rmApplied add-cube-cbrt1.1
Applied associate-*r*1.1
Simplified1.1
if 8.501320620640499e-15 < x Initial program 3.7
Simplified3.7
rmApplied div-sub3.7
Applied div-sub3.7
Applied associate--r-3.1
Final simplification1.7
herbie shell --seed 2019304
(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))