\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 90.24341034286276:\\
\;\;\;\;\log \left(e \cdot \left(1 - \left(x \cdot x\right) \cdot \left(\frac{1}{2} + \frac{-1}{3} \cdot x\right)\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 \cdot \varepsilon + x}}}{\varepsilon} - \frac{\frac{1}{2}}{e^{x \cdot \varepsilon + x}}\right)\\
\end{array}double f(double x, double eps) {
double r1201318 = 1.0;
double r1201319 = eps;
double r1201320 = r1201318 / r1201319;
double r1201321 = r1201318 + r1201320;
double r1201322 = r1201318 - r1201319;
double r1201323 = x;
double r1201324 = r1201322 * r1201323;
double r1201325 = -r1201324;
double r1201326 = exp(r1201325);
double r1201327 = r1201321 * r1201326;
double r1201328 = r1201320 - r1201318;
double r1201329 = r1201318 + r1201319;
double r1201330 = r1201329 * r1201323;
double r1201331 = -r1201330;
double r1201332 = exp(r1201331);
double r1201333 = r1201328 * r1201332;
double r1201334 = r1201327 - r1201333;
double r1201335 = 2.0;
double r1201336 = r1201334 / r1201335;
return r1201336;
}
double f(double x, double eps) {
double r1201337 = x;
double r1201338 = 90.24341034286276;
bool r1201339 = r1201337 <= r1201338;
double r1201340 = exp(1.0);
double r1201341 = 1.0;
double r1201342 = r1201337 * r1201337;
double r1201343 = 0.5;
double r1201344 = -0.3333333333333333;
double r1201345 = r1201344 * r1201337;
double r1201346 = r1201343 + r1201345;
double r1201347 = r1201342 * r1201346;
double r1201348 = r1201341 - r1201347;
double r1201349 = r1201340 * r1201348;
double r1201350 = log(r1201349);
double r1201351 = eps;
double r1201352 = r1201337 * r1201351;
double r1201353 = r1201337 - r1201352;
double r1201354 = exp(r1201353);
double r1201355 = r1201343 / r1201354;
double r1201356 = r1201355 / r1201351;
double r1201357 = r1201356 + r1201355;
double r1201358 = r1201352 + r1201337;
double r1201359 = exp(r1201358);
double r1201360 = r1201343 / r1201359;
double r1201361 = r1201360 / r1201351;
double r1201362 = r1201361 - r1201360;
double r1201363 = r1201357 - r1201362;
double r1201364 = r1201339 ? r1201350 : r1201363;
return r1201364;
}



Bits error versus x



Bits error versus eps
Results
if x < 90.24341034286276Initial program 39.5
Simplified39.5
Taylor expanded around 0 1.1
Simplified1.1
rmApplied add-log-exp1.2
Simplified1.2
Taylor expanded around 0 1.1
Simplified1.1
if 90.24341034286276 < x Initial program 0.2
Simplified0.2
Final simplification0.9
herbie shell --seed 2019130
(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))