\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 273.9633798024049156083492562174797058105:\\
\;\;\;\;\left(\sqrt[3]{\left(0.3333333333333333703407674875052180141211 \cdot {x}^{3} + 1\right) - 0.5 \cdot {x}^{2}} \cdot \frac{\sqrt[3]{\left(0.3333333333333333703407674875052180141211 \cdot {x}^{3} + 1\right) \cdot \left(0.3333333333333333703407674875052180141211 \cdot {x}^{3} + 1\right) - \left(0.5 \cdot {x}^{2}\right) \cdot \left(0.5 \cdot {x}^{2}\right)}}{{1}^{\frac{1}{3}} \cdot \left(0.1666666666666666574148081281236954964697 \cdot {x}^{2} + \left(0.1111111111111111049432054187491303309798 \cdot {x}^{3} + 1\right)\right)}\right) \cdot \sqrt[3]{\left(0.3333333333333333703407674875052180141211 \cdot {x}^{3} + 1\right) - 0.5 \cdot {x}^{2}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1 + \frac{1}{\varepsilon}}{e^{\left(1 - \varepsilon\right) \cdot x}}}{2} - \frac{\frac{\frac{1}{\varepsilon} - 1}{e^{x \cdot \left(\varepsilon + 1\right)}}}{2}\\
\end{array}double f(double x, double eps) {
double r41370 = 1.0;
double r41371 = eps;
double r41372 = r41370 / r41371;
double r41373 = r41370 + r41372;
double r41374 = r41370 - r41371;
double r41375 = x;
double r41376 = r41374 * r41375;
double r41377 = -r41376;
double r41378 = exp(r41377);
double r41379 = r41373 * r41378;
double r41380 = r41372 - r41370;
double r41381 = r41370 + r41371;
double r41382 = r41381 * r41375;
double r41383 = -r41382;
double r41384 = exp(r41383);
double r41385 = r41380 * r41384;
double r41386 = r41379 - r41385;
double r41387 = 2.0;
double r41388 = r41386 / r41387;
return r41388;
}
double f(double x, double eps) {
double r41389 = x;
double r41390 = 273.9633798024049;
bool r41391 = r41389 <= r41390;
double r41392 = 0.33333333333333337;
double r41393 = 3.0;
double r41394 = pow(r41389, r41393);
double r41395 = r41392 * r41394;
double r41396 = 1.0;
double r41397 = r41395 + r41396;
double r41398 = 0.5;
double r41399 = 2.0;
double r41400 = pow(r41389, r41399);
double r41401 = r41398 * r41400;
double r41402 = r41397 - r41401;
double r41403 = cbrt(r41402);
double r41404 = r41397 * r41397;
double r41405 = r41401 * r41401;
double r41406 = r41404 - r41405;
double r41407 = cbrt(r41406);
double r41408 = 0.3333333333333333;
double r41409 = pow(r41396, r41408);
double r41410 = 0.16666666666666666;
double r41411 = r41410 * r41400;
double r41412 = 0.1111111111111111;
double r41413 = r41412 * r41394;
double r41414 = 1.0;
double r41415 = r41413 + r41414;
double r41416 = r41411 + r41415;
double r41417 = r41409 * r41416;
double r41418 = r41407 / r41417;
double r41419 = r41403 * r41418;
double r41420 = r41419 * r41403;
double r41421 = eps;
double r41422 = r41396 / r41421;
double r41423 = r41396 + r41422;
double r41424 = r41396 - r41421;
double r41425 = r41424 * r41389;
double r41426 = exp(r41425);
double r41427 = r41423 / r41426;
double r41428 = 2.0;
double r41429 = r41427 / r41428;
double r41430 = r41422 - r41396;
double r41431 = r41421 + r41396;
double r41432 = r41389 * r41431;
double r41433 = exp(r41432);
double r41434 = r41430 / r41433;
double r41435 = r41434 / r41428;
double r41436 = r41429 - r41435;
double r41437 = r41391 ? r41420 : r41436;
return r41437;
}



Bits error versus x



Bits error versus eps
Results
if x < 273.9633798024049Initial program 39.1
Simplified39.1
Taylor expanded around 0 1.4
rmApplied add-cube-cbrt1.4
rmApplied flip--1.4
Applied cbrt-div1.4
Taylor expanded around 0 1.4
Simplified1.4
if 273.9633798024049 < x Initial program 0.1
Simplified0.1
Taylor expanded around 0 0.1
Simplified0.1
Final simplification1.1
herbie shell --seed 2019353
(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))