\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -0.00022073346315206534:\\
\;\;\;\;\frac{e^{x}}{x} - \frac{1}{x}\\
\mathbf{else}:\\
\;\;\;\;1 + \left(\frac{1}{6} \cdot x + \frac{1}{2}\right) \cdot x\\
\end{array}double f(double x) {
double r3869369 = x;
double r3869370 = exp(r3869369);
double r3869371 = 1.0;
double r3869372 = r3869370 - r3869371;
double r3869373 = r3869372 / r3869369;
return r3869373;
}
double f(double x) {
double r3869374 = x;
double r3869375 = -0.00022073346315206534;
bool r3869376 = r3869374 <= r3869375;
double r3869377 = exp(r3869374);
double r3869378 = r3869377 / r3869374;
double r3869379 = 1.0;
double r3869380 = r3869379 / r3869374;
double r3869381 = r3869378 - r3869380;
double r3869382 = 0.16666666666666666;
double r3869383 = r3869382 * r3869374;
double r3869384 = 0.5;
double r3869385 = r3869383 + r3869384;
double r3869386 = r3869385 * r3869374;
double r3869387 = r3869379 + r3869386;
double r3869388 = r3869376 ? r3869381 : r3869387;
return r3869388;
}




Bits error versus x
Results
| Original | 40.0 |
|---|---|
| Target | 39.2 |
| Herbie | 0.3 |
if x < -0.00022073346315206534Initial program 0.0
rmApplied div-sub0.1
if -0.00022073346315206534 < x Initial program 60.1
Taylor expanded around 0 0.5
Simplified0.5
Final simplification0.3
herbie shell --seed 2019164
(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))