\frac{e^{x}}{e^{x} - 1}\begin{array}{l}
\mathbf{if}\;e^{x} \le 0.9351426122859008982501904938544612377882:\\
\;\;\;\;\frac{\sqrt[3]{e^{x}} \cdot \sqrt[3]{e^{x}}}{\sqrt{e^{x}} + \sqrt{1}} \cdot \frac{\sqrt[3]{e^{x}}}{\sqrt{e^{x}} - \sqrt{1}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{2} + \left(\frac{1}{12} \cdot x + \frac{1}{x}\right)\\
\end{array}double f(double x) {
double r59601 = x;
double r59602 = exp(r59601);
double r59603 = 1.0;
double r59604 = r59602 - r59603;
double r59605 = r59602 / r59604;
return r59605;
}
double f(double x) {
double r59606 = x;
double r59607 = exp(r59606);
double r59608 = 0.9351426122859009;
bool r59609 = r59607 <= r59608;
double r59610 = cbrt(r59607);
double r59611 = r59610 * r59610;
double r59612 = sqrt(r59607);
double r59613 = 1.0;
double r59614 = sqrt(r59613);
double r59615 = r59612 + r59614;
double r59616 = r59611 / r59615;
double r59617 = r59612 - r59614;
double r59618 = r59610 / r59617;
double r59619 = r59616 * r59618;
double r59620 = 0.5;
double r59621 = 0.08333333333333333;
double r59622 = r59621 * r59606;
double r59623 = 1.0;
double r59624 = r59623 / r59606;
double r59625 = r59622 + r59624;
double r59626 = r59620 + r59625;
double r59627 = r59609 ? r59619 : r59626;
return r59627;
}




Bits error versus x
Results
| Original | 41.4 |
|---|---|
| Target | 41.0 |
| Herbie | 0.7 |
if (exp x) < 0.9351426122859009Initial program 0.0
rmApplied add-sqr-sqrt0.0
Applied add-sqr-sqrt0.0
Applied difference-of-squares0.0
Applied add-cube-cbrt0.0
Applied times-frac0.0
if 0.9351426122859009 < (exp x) Initial program 61.5
Taylor expanded around 0 1.0
Final simplification0.7
herbie shell --seed 2019294
(FPCore (x)
:name "expq2 (section 3.11)"
:precision binary64
:herbie-target
(/ 1 (- 1 (exp (- x))))
(/ (exp x) (- (exp x) 1)))