double f(double x) {
double r4639937 = x;
double r4639938 = exp(r4639937);
double r4639939 = 1.0;
double r4639940 = r4639938 - r4639939;
double r4639941 = r4639938 / r4639940;
return r4639941;
}
double f(double x) {
double r4639942 = x;
double r4639943 = -0.0016014345181303183;
bool r4639944 = r4639942 <= r4639943;
double r4639945 = exp(r4639942);
double r4639946 = 1.0;
double r4639947 = r4639945 - r4639946;
double r4639948 = r4639945 / r4639947;
double r4639949 = cbrt(r4639948);
double r4639950 = r4639949 * r4639949;
double r4639951 = r4639949 * r4639950;
double r4639952 = 0.08333333333333333;
double r4639953 = r4639942 * r4639952;
double r4639954 = r4639946 / r4639942;
double r4639955 = 0.5;
double r4639956 = r4639954 + r4639955;
double r4639957 = r4639953 + r4639956;
double r4639958 = r4639944 ? r4639951 : r4639957;
return r4639958;
}
\frac{e^{x}}{e^{x} - 1}\begin{array}{l}
\mathbf{if}\;x \le -0.0016014345181303183:\\
\;\;\;\;\sqrt[3]{\frac{e^{x}}{e^{x} - 1}} \cdot \left(\sqrt[3]{\frac{e^{x}}{e^{x} - 1}} \cdot \sqrt[3]{\frac{e^{x}}{e^{x} - 1}}\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot \frac{1}{12} + \left(\frac{1}{x} + \frac{1}{2}\right)\\
\end{array}



Bits error versus x
| Original | 40.2 |
|---|---|
| Target | 39.8 |
| Herbie | 0.6 |
if x < -0.0016014345181303183Initial program 0.0
rmApplied add-cube-cbrt0.0
if -0.0016014345181303183 < x Initial program 60.2
Taylor expanded around 0 0.9
Final simplification0.6
herbie shell --seed 2019102
(FPCore (x)
:name "expq2 (section 3.11)"
:herbie-target
(/ 1 (- 1 (exp (- x))))
(/ (exp x) (- (exp x) 1)))