\frac{e^{x}}{e^{x} - 1}\begin{array}{l}
\mathbf{if}\;e^{x} \le 0.0184360243772397382:\\
\;\;\;\;\frac{1}{1 - e^{\log 1 - x}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{2} + \left(\frac{1}{12} \cdot x + \frac{1}{x}\right)\\
\end{array}double f(double x) {
double r87935 = x;
double r87936 = exp(r87935);
double r87937 = 1.0;
double r87938 = r87936 - r87937;
double r87939 = r87936 / r87938;
return r87939;
}
double f(double x) {
double r87940 = x;
double r87941 = exp(r87940);
double r87942 = 0.018436024377239738;
bool r87943 = r87941 <= r87942;
double r87944 = 1.0;
double r87945 = 1.0;
double r87946 = log(r87945);
double r87947 = r87946 - r87940;
double r87948 = exp(r87947);
double r87949 = r87944 - r87948;
double r87950 = r87944 / r87949;
double r87951 = 0.5;
double r87952 = 0.08333333333333333;
double r87953 = r87952 * r87940;
double r87954 = r87944 / r87940;
double r87955 = r87953 + r87954;
double r87956 = r87951 + r87955;
double r87957 = r87943 ? r87950 : r87956;
return r87957;
}




Bits error versus x
Results
| Original | 40.5 |
|---|---|
| Target | 40.1 |
| Herbie | 0.7 |
if (exp x) < 0.018436024377239738Initial program 0.0
rmApplied clear-num0.0
Simplified0.0
rmApplied add-exp-log0.0
Applied div-exp0.0
if 0.018436024377239738 < (exp x) Initial program 61.4
Taylor expanded around 0 1.1
Final simplification0.7
herbie shell --seed 2020049
(FPCore (x)
:name "expq2 (section 3.11)"
:precision binary64
:herbie-target
(/ 1 (- 1 (exp (- x))))
(/ (exp x) (- (exp x) 1)))