\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -0.0001556646497825041:\\
\;\;\;\;\frac{\log \left(e^{e^{x} \cdot e^{x} - 1}\right)}{\left(e^{x} + 1\right) \cdot x}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{6} \cdot x + \frac{1}{2}\right) \cdot x + 1\\
\end{array}double f(double x) {
double r2848618 = x;
double r2848619 = exp(r2848618);
double r2848620 = 1.0;
double r2848621 = r2848619 - r2848620;
double r2848622 = r2848621 / r2848618;
return r2848622;
}
double f(double x) {
double r2848623 = x;
double r2848624 = -0.0001556646497825041;
bool r2848625 = r2848623 <= r2848624;
double r2848626 = exp(r2848623);
double r2848627 = r2848626 * r2848626;
double r2848628 = 1.0;
double r2848629 = r2848627 - r2848628;
double r2848630 = exp(r2848629);
double r2848631 = log(r2848630);
double r2848632 = r2848626 + r2848628;
double r2848633 = r2848632 * r2848623;
double r2848634 = r2848631 / r2848633;
double r2848635 = 0.16666666666666666;
double r2848636 = r2848635 * r2848623;
double r2848637 = 0.5;
double r2848638 = r2848636 + r2848637;
double r2848639 = r2848638 * r2848623;
double r2848640 = r2848639 + r2848628;
double r2848641 = r2848625 ? r2848634 : r2848640;
return r2848641;
}




Bits error versus x
Results
| Original | 39.8 |
|---|---|
| Target | 38.9 |
| Herbie | 0.3 |
if x < -0.0001556646497825041Initial program 0.1
rmApplied flip--0.1
Applied associate-/l/0.1
rmApplied add-log-exp0.1
Applied add-log-exp0.1
Applied diff-log0.1
Simplified0.0
if -0.0001556646497825041 < x Initial program 60.0
Taylor expanded around 0 0.5
Simplified0.5
Final simplification0.3
herbie shell --seed 2019138
(FPCore (x)
:name "Kahan's exp quotient"
:herbie-target
(if (and (< x 1) (> x -1)) (/ (- (exp x) 1) (log (exp x))) (/ (- (exp x) 1) x))
(/ (- (exp x) 1) x))