\frac{e^{x}}{e^{x} - 1}\begin{array}{l}
\mathbf{if}\;x \le -2.9436761867628915 \cdot 10^{-05}:\\
\;\;\;\;\frac{e^{x}}{\frac{e^{x} \cdot e^{x} + -1}{e^{x} + 1}}\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\frac{1}{12} \cdot x\right)\right) + \left(\frac{1}{x} + \frac{1}{2}\right)\\
\end{array}double f(double x) {
double r1771138 = x;
double r1771139 = exp(r1771138);
double r1771140 = 1.0;
double r1771141 = r1771139 - r1771140;
double r1771142 = r1771139 / r1771141;
return r1771142;
}
double f(double x) {
double r1771143 = x;
double r1771144 = -2.9436761867628915e-05;
bool r1771145 = r1771143 <= r1771144;
double r1771146 = exp(r1771143);
double r1771147 = r1771146 * r1771146;
double r1771148 = -1.0;
double r1771149 = r1771147 + r1771148;
double r1771150 = 1.0;
double r1771151 = r1771146 + r1771150;
double r1771152 = r1771149 / r1771151;
double r1771153 = r1771146 / r1771152;
double r1771154 = 0.08333333333333333;
double r1771155 = r1771154 * r1771143;
double r1771156 = /* ERROR: no posit support in C */;
double r1771157 = /* ERROR: no posit support in C */;
double r1771158 = r1771150 / r1771143;
double r1771159 = 0.5;
double r1771160 = r1771158 + r1771159;
double r1771161 = r1771157 + r1771160;
double r1771162 = r1771145 ? r1771153 : r1771161;
return r1771162;
}




Bits error versus x
| Original | 39.5 |
|---|---|
| Target | 39.2 |
| Herbie | 0.7 |
if x < -2.9436761867628915e-05Initial program 0.1
rmApplied flip--0.1
Simplified0.1
if -2.9436761867628915e-05 < x Initial program 60.4
Taylor expanded around 0 0.9
rmApplied insert-posit161.0
Final simplification0.7
herbie shell --seed 2019153
(FPCore (x)
:name "expq2 (section 3.11)"
:herbie-target
(/ 1 (- 1 (exp (- x))))
(/ (exp x) (- (exp x) 1)))