\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -1.97999296298343282 \cdot 10^{-4}:\\
\;\;\;\;\frac{\log \left(e^{e^{x} - 1}\right)}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{6} \cdot {x}^{2} + \left(\frac{1}{2} \cdot x + 1\right)\\
\end{array}double f(double x) {
double r90645 = x;
double r90646 = exp(r90645);
double r90647 = 1.0;
double r90648 = r90646 - r90647;
double r90649 = r90648 / r90645;
return r90649;
}
double f(double x) {
double r90650 = x;
double r90651 = -0.00019799929629834328;
bool r90652 = r90650 <= r90651;
double r90653 = exp(r90650);
double r90654 = 1.0;
double r90655 = r90653 - r90654;
double r90656 = exp(r90655);
double r90657 = log(r90656);
double r90658 = r90657 / r90650;
double r90659 = 0.16666666666666666;
double r90660 = 2.0;
double r90661 = pow(r90650, r90660);
double r90662 = r90659 * r90661;
double r90663 = 0.5;
double r90664 = r90663 * r90650;
double r90665 = 1.0;
double r90666 = r90664 + r90665;
double r90667 = r90662 + r90666;
double r90668 = r90652 ? r90658 : r90667;
return r90668;
}




Bits error versus x
Results
| Original | 38.9 |
|---|---|
| Target | 39.3 |
| Herbie | 0.3 |
if x < -0.00019799929629834328Initial program 0.1
rmApplied add-log-exp0.1
Applied add-log-exp0.1
Applied diff-log0.1
Simplified0.1
if -0.00019799929629834328 < x Initial program 60.0
Taylor expanded around 0 0.4
Simplified0.4
Taylor expanded around 0 0.4
Final simplification0.3
herbie shell --seed 2020025
(FPCore (x)
:name "Kahan's exp quotient"
:precision binary64
:herbie-target
(if (and (< x 1) (> x -1)) (/ (- (exp x) 1) (log (exp x))) (/ (- (exp x) 1) x))
(/ (- (exp x) 1) x))