\frac{e^{x}}{e^{x} - 1}\begin{array}{l}
\mathbf{if}\;x \le -0.00178468728852752530136815956041118624853:\\
\;\;\;\;\frac{e^{x}}{\frac{e^{x + x}}{1 + e^{x}} - \frac{1 \cdot 1}{1 + e^{x}}}\\
\mathbf{elif}\;x \le 0.001716590725359118732584740030233660945669:\\
\;\;\;\;\frac{1}{2} + \left(\frac{1}{12} \cdot x + \frac{1}{x}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{1 - \frac{1}{\frac{e^{x + x}}{1}}}{1 + \frac{1}{e^{x}}}}\\
\end{array}double f(double x) {
double r71503 = x;
double r71504 = exp(r71503);
double r71505 = 1.0;
double r71506 = r71504 - r71505;
double r71507 = r71504 / r71506;
return r71507;
}
double f(double x) {
double r71508 = x;
double r71509 = -0.0017846872885275253;
bool r71510 = r71508 <= r71509;
double r71511 = exp(r71508);
double r71512 = r71508 + r71508;
double r71513 = exp(r71512);
double r71514 = 1.0;
double r71515 = r71514 + r71511;
double r71516 = r71513 / r71515;
double r71517 = r71514 * r71514;
double r71518 = r71517 / r71515;
double r71519 = r71516 - r71518;
double r71520 = r71511 / r71519;
double r71521 = 0.0017165907253591187;
bool r71522 = r71508 <= r71521;
double r71523 = 0.5;
double r71524 = 0.08333333333333333;
double r71525 = r71524 * r71508;
double r71526 = 1.0;
double r71527 = r71526 / r71508;
double r71528 = r71525 + r71527;
double r71529 = r71523 + r71528;
double r71530 = r71513 / r71514;
double r71531 = r71514 / r71530;
double r71532 = r71526 - r71531;
double r71533 = r71514 / r71511;
double r71534 = r71526 + r71533;
double r71535 = r71532 / r71534;
double r71536 = r71526 / r71535;
double r71537 = r71522 ? r71529 : r71536;
double r71538 = r71510 ? r71520 : r71537;
return r71538;
}




Bits error versus x
Results
| Original | 41.5 |
|---|---|
| Target | 41.0 |
| Herbie | 0.0 |
if x < -0.0017846872885275253Initial program 0.0
rmApplied flip--0.0
Simplified0.0
Simplified0.0
rmApplied div-sub0.0
if -0.0017846872885275253 < x < 0.0017165907253591187Initial program 62.4
Taylor expanded around 0 0.0
if 0.0017165907253591187 < x Initial program 38.8
rmApplied clear-num38.8
Simplified0.5
rmApplied flip--0.4
Simplified0.3
Final simplification0.0
herbie shell --seed 2019235
(FPCore (x)
:name "expq2 (section 3.11)"
:precision binary64
:herbie-target
(/ 1 (- 1 (exp (- x))))
(/ (exp x) (- (exp x) 1)))