\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 1.0640289263225317 \cdot 10^{-25}:\\
\;\;\;\;\mathsf{fma}\left(1.38778 \cdot 10^{-17}, \frac{\sqrt[3]{{x}^{3}} \cdot \left(\log \left(\sqrt{e^{x}}\right) + \log \left(\sqrt{e^{x}}\right)\right)}{\frac{\varepsilon}{x}}, 1 - 0.5 \cdot {x}^{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{e^{-\log \left(e^{\left(1 + \varepsilon\right) \cdot x}\right)}}{2}, 1 - \frac{1}{\varepsilon}, \frac{1 + \frac{1}{\varepsilon}}{2 \cdot e^{\left(1 - \varepsilon\right) \cdot x}}\right)\\
\end{array}double f(double x, double eps) {
double r41406 = 1.0;
double r41407 = eps;
double r41408 = r41406 / r41407;
double r41409 = r41406 + r41408;
double r41410 = r41406 - r41407;
double r41411 = x;
double r41412 = r41410 * r41411;
double r41413 = -r41412;
double r41414 = exp(r41413);
double r41415 = r41409 * r41414;
double r41416 = r41408 - r41406;
double r41417 = r41406 + r41407;
double r41418 = r41417 * r41411;
double r41419 = -r41418;
double r41420 = exp(r41419);
double r41421 = r41416 * r41420;
double r41422 = r41415 - r41421;
double r41423 = 2.0;
double r41424 = r41422 / r41423;
return r41424;
}
double f(double x, double eps) {
double r41425 = x;
double r41426 = 1.0640289263225317e-25;
bool r41427 = r41425 <= r41426;
double r41428 = 1.3877787807814457e-17;
double r41429 = 3.0;
double r41430 = pow(r41425, r41429);
double r41431 = cbrt(r41430);
double r41432 = exp(r41425);
double r41433 = sqrt(r41432);
double r41434 = log(r41433);
double r41435 = r41434 + r41434;
double r41436 = r41431 * r41435;
double r41437 = eps;
double r41438 = r41437 / r41425;
double r41439 = r41436 / r41438;
double r41440 = 1.0;
double r41441 = 0.5;
double r41442 = 2.0;
double r41443 = pow(r41425, r41442);
double r41444 = r41441 * r41443;
double r41445 = r41440 - r41444;
double r41446 = fma(r41428, r41439, r41445);
double r41447 = r41440 + r41437;
double r41448 = r41447 * r41425;
double r41449 = exp(r41448);
double r41450 = log(r41449);
double r41451 = -r41450;
double r41452 = exp(r41451);
double r41453 = 2.0;
double r41454 = r41452 / r41453;
double r41455 = r41440 / r41437;
double r41456 = r41440 - r41455;
double r41457 = r41440 + r41455;
double r41458 = r41440 - r41437;
double r41459 = r41458 * r41425;
double r41460 = exp(r41459);
double r41461 = r41453 * r41460;
double r41462 = r41457 / r41461;
double r41463 = fma(r41454, r41456, r41462);
double r41464 = r41427 ? r41446 : r41463;
return r41464;
}



Bits error versus x



Bits error versus eps
if x < 1.0640289263225317e-25Initial program 38.3
Simplified38.3
Taylor expanded around 0 6.1
Simplified6.1
rmApplied add-cube-cbrt6.1
Applied associate-/l*6.1
Simplified6.1
rmApplied add-log-exp2.0
Simplified2.0
rmApplied add-sqr-sqrt2.0
Applied log-prod2.0
if 1.0640289263225317e-25 < x Initial program 4.6
Simplified4.7
rmApplied add-log-exp4.6
Final simplification2.7
herbie shell --seed 2020056 +o rules:numerics
(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))