\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -0.0001509743064020555:\\
\;\;\;\;\frac{-1 + e^{x} \cdot e^{x}}{x \cdot \left(1 + e^{x}\right)}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \left(\frac{1}{6} \cdot x + \frac{1}{2}\right) + 1\\
\end{array}double f(double x) {
double r10485787 = x;
double r10485788 = exp(r10485787);
double r10485789 = 1.0;
double r10485790 = r10485788 - r10485789;
double r10485791 = r10485790 / r10485787;
return r10485791;
}
double f(double x) {
double r10485792 = x;
double r10485793 = -0.0001509743064020555;
bool r10485794 = r10485792 <= r10485793;
double r10485795 = -1.0;
double r10485796 = exp(r10485792);
double r10485797 = r10485796 * r10485796;
double r10485798 = r10485795 + r10485797;
double r10485799 = 1.0;
double r10485800 = r10485799 + r10485796;
double r10485801 = r10485792 * r10485800;
double r10485802 = r10485798 / r10485801;
double r10485803 = 0.16666666666666666;
double r10485804 = r10485803 * r10485792;
double r10485805 = 0.5;
double r10485806 = r10485804 + r10485805;
double r10485807 = r10485792 * r10485806;
double r10485808 = r10485807 + r10485799;
double r10485809 = r10485794 ? r10485802 : r10485808;
return r10485809;
}




Bits error versus x
Results
| Original | 39.9 |
|---|---|
| Target | 39.1 |
| Herbie | 0.3 |
if x < -0.0001509743064020555Initial program 0.1
rmApplied flip--0.1
Applied associate-/l/0.1
Simplified0.1
if -0.0001509743064020555 < x Initial program 60.1
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.3
herbie shell --seed 2019120
(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))