\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -0.00017827683498693693:\\
\;\;\;\;\frac{-1 + e^{x} \cdot e^{x}}{x + e^{x} \cdot x}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \left(\frac{1}{6} \cdot x + \frac{1}{2}\right) + 1\\
\end{array}double f(double x) {
double r2479855 = x;
double r2479856 = exp(r2479855);
double r2479857 = 1.0;
double r2479858 = r2479856 - r2479857;
double r2479859 = r2479858 / r2479855;
return r2479859;
}
double f(double x) {
double r2479860 = x;
double r2479861 = -0.00017827683498693693;
bool r2479862 = r2479860 <= r2479861;
double r2479863 = -1.0;
double r2479864 = exp(r2479860);
double r2479865 = r2479864 * r2479864;
double r2479866 = r2479863 + r2479865;
double r2479867 = r2479864 * r2479860;
double r2479868 = r2479860 + r2479867;
double r2479869 = r2479866 / r2479868;
double r2479870 = 0.16666666666666666;
double r2479871 = r2479870 * r2479860;
double r2479872 = 0.5;
double r2479873 = r2479871 + r2479872;
double r2479874 = r2479860 * r2479873;
double r2479875 = 1.0;
double r2479876 = r2479874 + r2479875;
double r2479877 = r2479862 ? r2479869 : r2479876;
return r2479877;
}




Bits error versus x
Results
| Original | 39.5 |
|---|---|
| Target | 38.6 |
| Herbie | 0.3 |
if x < -0.00017827683498693693Initial program 0.0
rmApplied div-inv0.0
rmApplied flip--0.0
Applied frac-times0.0
Simplified0.0
Simplified0.0
if -0.00017827683498693693 < x Initial program 60.1
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.3
herbie shell --seed 2019135
(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))