\frac{e^{x}}{e^{x} - 1}\begin{array}{l}
\mathbf{if}\;e^{x} \le 0.992731153252632281:\\
\;\;\;\;\frac{e^{x}}{\log \left(\sqrt{e^{e^{x} - 1}}\right) + \log \left(\sqrt{e^{e^{x} - 1}}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{2} + \left(\frac{1}{12} \cdot x + \frac{1}{x}\right)\\
\end{array}double f(double x) {
double r64928 = x;
double r64929 = exp(r64928);
double r64930 = 1.0;
double r64931 = r64929 - r64930;
double r64932 = r64929 / r64931;
return r64932;
}
double f(double x) {
double r64933 = x;
double r64934 = exp(r64933);
double r64935 = 0.9927311532526323;
bool r64936 = r64934 <= r64935;
double r64937 = 1.0;
double r64938 = r64934 - r64937;
double r64939 = exp(r64938);
double r64940 = sqrt(r64939);
double r64941 = log(r64940);
double r64942 = r64941 + r64941;
double r64943 = r64934 / r64942;
double r64944 = 0.5;
double r64945 = 0.08333333333333333;
double r64946 = r64945 * r64933;
double r64947 = 1.0;
double r64948 = r64947 / r64933;
double r64949 = r64946 + r64948;
double r64950 = r64944 + r64949;
double r64951 = r64936 ? r64943 : r64950;
return r64951;
}




Bits error versus x
Results
| Original | 41.2 |
|---|---|
| Target | 40.7 |
| Herbie | 0.7 |
if (exp x) < 0.9927311532526323Initial program 0.0
rmApplied add-log-exp0.0
Applied add-log-exp0.0
Applied diff-log0.0
Simplified0.0
rmApplied add-sqr-sqrt0.0
Applied log-prod0.0
if 0.9927311532526323 < (exp x) Initial program 62.0
Taylor expanded around 0 1.0
Final simplification0.7
herbie shell --seed 2020062
(FPCore (x)
:name "expq2 (section 3.11)"
:precision binary64
:herbie-target
(/ 1 (- 1 (exp (- x))))
(/ (exp x) (- (exp x) 1)))