\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -1.0015840142054043 \cdot 10^{-4}:\\
\;\;\;\;\frac{e^{2 \cdot x}}{\left(e^{x} + 1\right) \cdot x} - \frac{\frac{1 \cdot 1}{x}}{e^{x} + 1}\\
\mathbf{else}:\\
\;\;\;\;1 + x \cdot \left(x \cdot \frac{1}{6} + \frac{1}{2}\right)\\
\end{array}double f(double x) {
double r80351 = x;
double r80352 = exp(r80351);
double r80353 = 1.0;
double r80354 = r80352 - r80353;
double r80355 = r80354 / r80351;
return r80355;
}
double f(double x) {
double r80356 = x;
double r80357 = -0.00010015840142054043;
bool r80358 = r80356 <= r80357;
double r80359 = 2.0;
double r80360 = r80359 * r80356;
double r80361 = exp(r80360);
double r80362 = exp(r80356);
double r80363 = 1.0;
double r80364 = r80362 + r80363;
double r80365 = r80364 * r80356;
double r80366 = r80361 / r80365;
double r80367 = r80363 * r80363;
double r80368 = r80367 / r80356;
double r80369 = r80368 / r80364;
double r80370 = r80366 - r80369;
double r80371 = 1.0;
double r80372 = 0.16666666666666666;
double r80373 = r80356 * r80372;
double r80374 = 0.5;
double r80375 = r80373 + r80374;
double r80376 = r80356 * r80375;
double r80377 = r80371 + r80376;
double r80378 = r80358 ? r80370 : r80377;
return r80378;
}




Bits error versus x
Results
| Original | 39.6 |
|---|---|
| Target | 40.0 |
| Herbie | 0.3 |
if x < -0.00010015840142054043Initial program 0.0
rmApplied flip--0.0
Applied associate-/l/0.0
rmApplied div-sub0.1
Simplified0.1
rmApplied associate-/r*0.1
if -0.00010015840142054043 < x Initial program 60.1
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.3
herbie shell --seed 2020042
(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))