\frac{e^{x}}{e^{x} - 1}\begin{array}{l}
\mathbf{if}\;x \le -0.0019097566603386235:\\
\;\;\;\;\frac{\left(e^{x} + e^{x} \cdot \left(e^{x} \cdot e^{x}\right)\right) + e^{x} \cdot e^{x}}{e^{x} \cdot \left(e^{x} \cdot e^{x}\right) + -1}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{x} + \frac{1}{2}\right) + \frac{1}{12} \cdot x\\
\end{array}double f(double x) {
double r21247948 = x;
double r21247949 = exp(r21247948);
double r21247950 = 1.0;
double r21247951 = r21247949 - r21247950;
double r21247952 = r21247949 / r21247951;
return r21247952;
}
double f(double x) {
double r21247953 = x;
double r21247954 = -0.0019097566603386235;
bool r21247955 = r21247953 <= r21247954;
double r21247956 = exp(r21247953);
double r21247957 = r21247956 * r21247956;
double r21247958 = r21247956 * r21247957;
double r21247959 = r21247956 + r21247958;
double r21247960 = r21247959 + r21247957;
double r21247961 = -1.0;
double r21247962 = r21247958 + r21247961;
double r21247963 = r21247960 / r21247962;
double r21247964 = 1.0;
double r21247965 = r21247964 / r21247953;
double r21247966 = 0.5;
double r21247967 = r21247965 + r21247966;
double r21247968 = 0.08333333333333333;
double r21247969 = r21247968 * r21247953;
double r21247970 = r21247967 + r21247969;
double r21247971 = r21247955 ? r21247963 : r21247970;
return r21247971;
}




Bits error versus x
Results
| Original | 39.8 |
|---|---|
| Target | 39.3 |
| Herbie | 0.7 |
if x < -0.0019097566603386235Initial program 0.0
rmApplied flip3--0.0
Taylor expanded around -inf 0.0
Simplified0.0
if -0.0019097566603386235 < x Initial program 60.1
Taylor expanded around 0 1.0
rmApplied +-commutative1.0
Final simplification0.7
herbie shell --seed 2019124
(FPCore (x)
:name "expq2 (section 3.11)"
:herbie-target
(/ 1 (- 1 (exp (- x))))
(/ (exp x) (- (exp x) 1)))