\frac{e^{x}}{e^{x} - 1}\begin{array}{l}
\mathbf{if}\;x \le -0.0018039782452811378:\\
\;\;\;\;\frac{e^{x}}{\frac{{\left(e^{x}\right)}^{3} - 1}{\left(e^{x} + 1\right) + e^{x} \cdot e^{x}}}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \frac{1}{12} + \left(\frac{1}{2} + \frac{1}{x}\right)\\
\end{array}double f(double x) {
double r6894453 = x;
double r6894454 = exp(r6894453);
double r6894455 = 1.0;
double r6894456 = r6894454 - r6894455;
double r6894457 = r6894454 / r6894456;
return r6894457;
}
double f(double x) {
double r6894458 = x;
double r6894459 = -0.0018039782452811378;
bool r6894460 = r6894458 <= r6894459;
double r6894461 = exp(r6894458);
double r6894462 = 3.0;
double r6894463 = pow(r6894461, r6894462);
double r6894464 = 1.0;
double r6894465 = r6894463 - r6894464;
double r6894466 = r6894461 + r6894464;
double r6894467 = r6894461 * r6894461;
double r6894468 = r6894466 + r6894467;
double r6894469 = r6894465 / r6894468;
double r6894470 = r6894461 / r6894469;
double r6894471 = 0.08333333333333333;
double r6894472 = r6894458 * r6894471;
double r6894473 = 0.5;
double r6894474 = r6894464 / r6894458;
double r6894475 = r6894473 + r6894474;
double r6894476 = r6894472 + r6894475;
double r6894477 = r6894460 ? r6894470 : r6894476;
return r6894477;
}




Bits error versus x
Results
| Original | 40.3 |
|---|---|
| Target | 39.9 |
| Herbie | 0.6 |
if x < -0.0018039782452811378Initial program 0.0
rmApplied flip3--0.0
if -0.0018039782452811378 < x Initial program 60.3
Taylor expanded around 0 0.8
rmApplied insert-posit161.0
Taylor expanded around -inf 0.8
Final simplification0.6
herbie shell --seed 2019119
(FPCore (x)
:name "expq2 (section 3.11)"
:herbie-target
(/ 1 (- 1 (exp (- x))))
(/ (exp x) (- (exp x) 1)))