\frac{e^{x}}{e^{x} - 1}\begin{array}{l}
\mathbf{if}\;x \le -0.001424537264045625667430172711647173855454:\\
\;\;\;\;\frac{e^{x}}{\sqrt[3]{\left(\frac{e^{3 \cdot x} - 1 \cdot \left(1 \cdot 1\right)}{e^{x} \cdot \left(e^{x} + 1\right) + 1 \cdot 1} \cdot \frac{e^{3 \cdot x} - 1 \cdot \left(1 \cdot 1\right)}{e^{x} \cdot \left(e^{x} + 1\right) + 1 \cdot 1}\right) \cdot \frac{e^{3 \cdot x} - 1 \cdot \left(1 \cdot 1\right)}{e^{x} \cdot \left(e^{x} + 1\right) + 1 \cdot 1}}}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{2} + \frac{1}{x}\right) + x \cdot \frac{1}{12}\\
\end{array}double f(double x) {
double r5840660 = x;
double r5840661 = exp(r5840660);
double r5840662 = 1.0;
double r5840663 = r5840661 - r5840662;
double r5840664 = r5840661 / r5840663;
return r5840664;
}
double f(double x) {
double r5840665 = x;
double r5840666 = -0.0014245372640456257;
bool r5840667 = r5840665 <= r5840666;
double r5840668 = exp(r5840665);
double r5840669 = 3.0;
double r5840670 = r5840669 * r5840665;
double r5840671 = exp(r5840670);
double r5840672 = 1.0;
double r5840673 = r5840672 * r5840672;
double r5840674 = r5840672 * r5840673;
double r5840675 = r5840671 - r5840674;
double r5840676 = r5840668 + r5840672;
double r5840677 = r5840668 * r5840676;
double r5840678 = r5840677 + r5840673;
double r5840679 = r5840675 / r5840678;
double r5840680 = r5840679 * r5840679;
double r5840681 = r5840680 * r5840679;
double r5840682 = cbrt(r5840681);
double r5840683 = r5840668 / r5840682;
double r5840684 = 0.5;
double r5840685 = 1.0;
double r5840686 = r5840685 / r5840665;
double r5840687 = r5840684 + r5840686;
double r5840688 = 0.08333333333333333;
double r5840689 = r5840665 * r5840688;
double r5840690 = r5840687 + r5840689;
double r5840691 = r5840667 ? r5840683 : r5840690;
return r5840691;
}




Bits error versus x
Results
| Original | 41.8 |
|---|---|
| Target | 41.6 |
| Herbie | 0.4 |
if x < -0.0014245372640456257Initial program 0.0
rmApplied flip3--0.0
Simplified0.0
Simplified0.0
rmApplied add-cbrt-cube0.0
Applied add-cbrt-cube0.0
Applied cbrt-undiv0.0
Simplified0.0
if -0.0014245372640456257 < x Initial program 61.9
Taylor expanded around 0 0.7
Final simplification0.4
herbie shell --seed 2019192
(FPCore (x)
:name "expq2 (section 3.11)"
:herbie-target
(/ 1.0 (- 1.0 (exp (- x))))
(/ (exp x) (- (exp x) 1.0)))