\frac{e^{x}}{e^{x} - 1}\begin{array}{l}
\mathbf{if}\;e^{x} \le 0.9967130846117587816834770819696132093668:\\
\;\;\;\;\frac{e^{x}}{\frac{\frac{{\left(e^{2}\right)}^{\left(2 \cdot x\right)} - 1 \cdot {1}^{3}}{1 \cdot 1 + {\left(e^{2}\right)}^{x}}}{e^{x} + 1}}\\
\mathbf{elif}\;e^{x} \le 1.000051799989470246998735092347487807274:\\
\;\;\;\;\left(\frac{1}{2} + x \cdot \frac{1}{12}\right) + \frac{1}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{1 - \frac{1}{e^{x}}}\\
\end{array}double f(double x) {
double r93330 = x;
double r93331 = exp(r93330);
double r93332 = 1.0;
double r93333 = r93331 - r93332;
double r93334 = r93331 / r93333;
return r93334;
}
double f(double x) {
double r93335 = x;
double r93336 = exp(r93335);
double r93337 = 0.9967130846117588;
bool r93338 = r93336 <= r93337;
double r93339 = 2.0;
double r93340 = exp(r93339);
double r93341 = r93339 * r93335;
double r93342 = pow(r93340, r93341);
double r93343 = 1.0;
double r93344 = 3.0;
double r93345 = pow(r93343, r93344);
double r93346 = r93343 * r93345;
double r93347 = r93342 - r93346;
double r93348 = r93343 * r93343;
double r93349 = pow(r93340, r93335);
double r93350 = r93348 + r93349;
double r93351 = r93347 / r93350;
double r93352 = r93336 + r93343;
double r93353 = r93351 / r93352;
double r93354 = r93336 / r93353;
double r93355 = 1.0000517999894702;
bool r93356 = r93336 <= r93355;
double r93357 = 0.5;
double r93358 = 0.08333333333333333;
double r93359 = r93335 * r93358;
double r93360 = r93357 + r93359;
double r93361 = 1.0;
double r93362 = r93361 / r93335;
double r93363 = r93360 + r93362;
double r93364 = r93343 / r93336;
double r93365 = r93361 - r93364;
double r93366 = r93361 / r93365;
double r93367 = r93356 ? r93363 : r93366;
double r93368 = r93338 ? r93354 : r93367;
return r93368;
}




Bits error versus x
Results
| Original | 41.0 |
|---|---|
| Target | 40.5 |
| Herbie | 0.0 |
if (exp x) < 0.9967130846117588Initial program 0.0
rmApplied flip--0.0
Simplified0.0
rmApplied flip--0.0
Simplified0.0
Simplified0.0
if 0.9967130846117588 < (exp x) < 1.0000517999894702Initial program 62.6
Taylor expanded around 0 0.0
Simplified0.0
if 1.0000517999894702 < (exp x) Initial program 35.6
rmApplied clear-num35.6
Simplified2.1
Final simplification0.0
herbie shell --seed 2019174
(FPCore (x)
:name "expq2 (section 3.11)"
:herbie-target
(/ 1.0 (- 1.0 (exp (- x))))
(/ (exp x) (- (exp x) 1.0)))