\frac{e^{x}}{e^{x} - 1}\begin{array}{l}
\mathbf{if}\;e^{x} \le 0.8767957581638243:\\
\;\;\;\;\left(e^{x} + 1\right) \cdot \frac{e^{x}}{e^{x} \cdot e^{x} + -1}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{x} + \frac{1}{2}\right) + \frac{1}{12} \cdot x\\
\end{array}double f(double x) {
double r3509280 = x;
double r3509281 = exp(r3509280);
double r3509282 = 1.0;
double r3509283 = r3509281 - r3509282;
double r3509284 = r3509281 / r3509283;
return r3509284;
}
double f(double x) {
double r3509285 = x;
double r3509286 = exp(r3509285);
double r3509287 = 0.8767957581638243;
bool r3509288 = r3509286 <= r3509287;
double r3509289 = 1.0;
double r3509290 = r3509286 + r3509289;
double r3509291 = r3509286 * r3509286;
double r3509292 = -1.0;
double r3509293 = r3509291 + r3509292;
double r3509294 = r3509286 / r3509293;
double r3509295 = r3509290 * r3509294;
double r3509296 = r3509289 / r3509285;
double r3509297 = 0.5;
double r3509298 = r3509296 + r3509297;
double r3509299 = 0.08333333333333333;
double r3509300 = r3509299 * r3509285;
double r3509301 = r3509298 + r3509300;
double r3509302 = r3509288 ? r3509295 : r3509301;
return r3509302;
}




Bits error versus x
Results
| Original | 40.0 |
|---|---|
| Target | 39.6 |
| Herbie | 0.6 |
if (exp x) < 0.8767957581638243Initial program 0.0
rmApplied flip--0.0
Applied associate-/r/0.0
Simplified0.0
if 0.8767957581638243 < (exp x) Initial program 59.9
Taylor expanded around 0 1.0
Taylor expanded around -inf 1.0
Final simplification0.6
herbie shell --seed 2019141
(FPCore (x)
:name "expq2 (section 3.11)"
:herbie-target
(/ 1 (- 1 (exp (- x))))
(/ (exp x) (- (exp x) 1)))