\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 10.487564346312402:\\
\;\;\;\;\log \left(e^{\frac{\left(\left(\left(x \cdot x\right) \cdot \frac{1}{3}\right) \cdot x\right) \cdot \left(\left(\left(x \cdot x\right) \cdot \frac{1}{3}\right) \cdot x\right) - \left(1 - \left(x \cdot x\right) \cdot \frac{1}{2}\right) \cdot \left(1 - \left(x \cdot x\right) \cdot \frac{1}{2}\right)}{\left(\left(x \cdot x\right) \cdot \frac{1}{3}\right) \cdot x - \left(1 - \left(x \cdot x\right) \cdot \frac{1}{2}\right)}}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{\frac{\frac{1}{2}}{e^{x - x \cdot \varepsilon}}}{\varepsilon} + \frac{\frac{1}{2}}{e^{x - x \cdot \varepsilon}}\right) - \left(\frac{\frac{\frac{1}{2}}{e^{x + x \cdot \varepsilon}}}{\varepsilon} - \frac{\frac{1}{2}}{\sqrt{e^{x + x \cdot \varepsilon}} \cdot \sqrt{e^{x + x \cdot \varepsilon}}}\right)\\
\end{array}double f(double x, double eps) {
double r2566528 = 1.0;
double r2566529 = eps;
double r2566530 = r2566528 / r2566529;
double r2566531 = r2566528 + r2566530;
double r2566532 = r2566528 - r2566529;
double r2566533 = x;
double r2566534 = r2566532 * r2566533;
double r2566535 = -r2566534;
double r2566536 = exp(r2566535);
double r2566537 = r2566531 * r2566536;
double r2566538 = r2566530 - r2566528;
double r2566539 = r2566528 + r2566529;
double r2566540 = r2566539 * r2566533;
double r2566541 = -r2566540;
double r2566542 = exp(r2566541);
double r2566543 = r2566538 * r2566542;
double r2566544 = r2566537 - r2566543;
double r2566545 = 2.0;
double r2566546 = r2566544 / r2566545;
return r2566546;
}
double f(double x, double eps) {
double r2566547 = x;
double r2566548 = 10.487564346312402;
bool r2566549 = r2566547 <= r2566548;
double r2566550 = r2566547 * r2566547;
double r2566551 = 0.3333333333333333;
double r2566552 = r2566550 * r2566551;
double r2566553 = r2566552 * r2566547;
double r2566554 = r2566553 * r2566553;
double r2566555 = 1.0;
double r2566556 = 0.5;
double r2566557 = r2566550 * r2566556;
double r2566558 = r2566555 - r2566557;
double r2566559 = r2566558 * r2566558;
double r2566560 = r2566554 - r2566559;
double r2566561 = r2566553 - r2566558;
double r2566562 = r2566560 / r2566561;
double r2566563 = exp(r2566562);
double r2566564 = log(r2566563);
double r2566565 = eps;
double r2566566 = r2566547 * r2566565;
double r2566567 = r2566547 - r2566566;
double r2566568 = exp(r2566567);
double r2566569 = r2566556 / r2566568;
double r2566570 = r2566569 / r2566565;
double r2566571 = r2566570 + r2566569;
double r2566572 = r2566547 + r2566566;
double r2566573 = exp(r2566572);
double r2566574 = r2566556 / r2566573;
double r2566575 = r2566574 / r2566565;
double r2566576 = sqrt(r2566573);
double r2566577 = r2566576 * r2566576;
double r2566578 = r2566556 / r2566577;
double r2566579 = r2566575 - r2566578;
double r2566580 = r2566571 - r2566579;
double r2566581 = r2566549 ? r2566564 : r2566580;
return r2566581;
}



Bits error versus x



Bits error versus eps
Results
if x < 10.487564346312402Initial program 39.0
Simplified39.0
Taylor expanded around 0 1.2
Simplified1.2
rmApplied flip-+1.2
rmApplied add-log-exp1.2
if 10.487564346312402 < x Initial program 0.4
Simplified0.4
rmApplied add-sqr-sqrt0.4
Final simplification1.0
herbie shell --seed 2019133
(FPCore (x eps)
:name "NMSE Section 6.1 mentioned, A"
(/ (- (* (+ 1 (/ 1 eps)) (exp (- (* (- 1 eps) x)))) (* (- (/ 1 eps) 1) (exp (- (* (+ 1 eps) x))))) 2))