\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -1.365072845514119328266117170400661962049 \cdot 10^{-4}:\\
\;\;\;\;\frac{\frac{e^{x + x} - 1 \cdot 1}{e^{x} \cdot e^{x} - 1 \cdot 1}}{\frac{x}{e^{x} - 1}}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot x\right) + 1\\
\end{array}double f(double x) {
double r52882 = x;
double r52883 = exp(r52882);
double r52884 = 1.0;
double r52885 = r52883 - r52884;
double r52886 = r52885 / r52882;
return r52886;
}
double f(double x) {
double r52887 = x;
double r52888 = -0.00013650728455141193;
bool r52889 = r52887 <= r52888;
double r52890 = r52887 + r52887;
double r52891 = exp(r52890);
double r52892 = 1.0;
double r52893 = r52892 * r52892;
double r52894 = r52891 - r52893;
double r52895 = exp(r52887);
double r52896 = r52895 * r52895;
double r52897 = r52896 - r52893;
double r52898 = r52894 / r52897;
double r52899 = r52895 - r52892;
double r52900 = r52887 / r52899;
double r52901 = r52898 / r52900;
double r52902 = 0.5;
double r52903 = 0.16666666666666666;
double r52904 = r52903 * r52887;
double r52905 = r52902 + r52904;
double r52906 = r52887 * r52905;
double r52907 = 1.0;
double r52908 = r52906 + r52907;
double r52909 = r52889 ? r52901 : r52908;
return r52909;
}




Bits error versus x
Results
| Original | 40.1 |
|---|---|
| Target | 40.5 |
| Herbie | 0.3 |
if x < -0.00013650728455141193Initial program 0.1
rmApplied flip--0.1
Simplified0.1
rmApplied flip-+0.1
Applied associate-/r/0.1
Applied associate-/l*0.1
if -0.00013650728455141193 < x Initial program 60.2
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.3
herbie shell --seed 2019235
(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))