\frac{e^{x}}{e^{x} - 1}\begin{array}{l}
\mathbf{if}\;e^{x} \le 0.8526603959516880770763691543834283947945:\\
\;\;\;\;\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 r100940 = x;
double r100941 = exp(r100940);
double r100942 = 1.0;
double r100943 = r100941 - r100942;
double r100944 = r100941 / r100943;
return r100944;
}
double f(double x) {
double r100945 = x;
double r100946 = exp(r100945);
double r100947 = 0.8526603959516881;
bool r100948 = r100946 <= r100947;
double r100949 = cbrt(r100946);
double r100950 = r100949 * r100949;
double r100951 = sqrt(r100946);
double r100952 = 1.0;
double r100953 = sqrt(r100952);
double r100954 = r100951 + r100953;
double r100955 = r100950 / r100954;
double r100956 = r100951 - r100953;
double r100957 = r100949 / r100956;
double r100958 = r100955 * r100957;
double r100959 = 0.5;
double r100960 = 0.08333333333333333;
double r100961 = r100960 * r100945;
double r100962 = 1.0;
double r100963 = r100962 / r100945;
double r100964 = r100961 + r100963;
double r100965 = r100959 + r100964;
double r100966 = r100948 ? r100958 : r100965;
return r100966;
}




Bits error versus x
Results
| Original | 41.5 |
|---|---|
| Target | 41.0 |
| Herbie | 0.7 |
if (exp x) < 0.8526603959516881Initial 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.8526603959516881 < (exp x) Initial program 62.0
Taylor expanded around 0 1.0
Final simplification0.7
herbie shell --seed 2019353
(FPCore (x)
:name "expq2 (section 3.11)"
:precision binary64
:herbie-target
(/ 1 (- 1 (exp (- x))))
(/ (exp x) (- (exp x) 1)))