\frac{e^{x}}{e^{x} - 1}\begin{array}{l}
\mathbf{if}\;x \le -0.001819987733615175:\\
\;\;\;\;\frac{e^{x}}{\frac{e^{x} \cdot \left(e^{x} \cdot e^{x}\right) + -1}{e^{x} \cdot e^{x} + \left(e^{x} + 1\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{12} \cdot x + \left(\frac{1}{x} + \frac{1}{2}\right)\\
\end{array}double f(double x) {
double r3021757 = x;
double r3021758 = exp(r3021757);
double r3021759 = 1.0;
double r3021760 = r3021758 - r3021759;
double r3021761 = r3021758 / r3021760;
return r3021761;
}
double f(double x) {
double r3021762 = x;
double r3021763 = -0.001819987733615175;
bool r3021764 = r3021762 <= r3021763;
double r3021765 = exp(r3021762);
double r3021766 = r3021765 * r3021765;
double r3021767 = r3021765 * r3021766;
double r3021768 = -1.0;
double r3021769 = r3021767 + r3021768;
double r3021770 = 1.0;
double r3021771 = r3021765 + r3021770;
double r3021772 = r3021766 + r3021771;
double r3021773 = r3021769 / r3021772;
double r3021774 = r3021765 / r3021773;
double r3021775 = 0.08333333333333333;
double r3021776 = r3021775 * r3021762;
double r3021777 = r3021770 / r3021762;
double r3021778 = 0.5;
double r3021779 = r3021777 + r3021778;
double r3021780 = r3021776 + r3021779;
double r3021781 = r3021764 ? r3021774 : r3021780;
return r3021781;
}




Bits error versus x
Results
| Original | 40.4 |
|---|---|
| Target | 40.1 |
| Herbie | 0.5 |
if x < -0.001819987733615175Initial program 0.0
rmApplied flip3--0.0
Simplified0.0
Simplified0.0
if -0.001819987733615175 < x Initial program 60.2
Taylor expanded around 0 0.7
Final simplification0.5
herbie shell --seed 2019132
(FPCore (x)
:name "expq2 (section 3.11)"
:herbie-target
(/ 1 (- 1 (exp (- x))))
(/ (exp x) (- (exp x) 1)))