\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -1.34542002814569053 \cdot 10^{-4}:\\
\;\;\;\;\left(e^{x} - 1\right) \cdot \frac{1}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{{x}^{2} \cdot \left(x \cdot \frac{1}{6} + \frac{1}{2}\right) + x}{x}\\
\end{array}double f(double x) {
double r66420 = x;
double r66421 = exp(r66420);
double r66422 = 1.0;
double r66423 = r66421 - r66422;
double r66424 = r66423 / r66420;
return r66424;
}
double f(double x) {
double r66425 = x;
double r66426 = -0.00013454200281456905;
bool r66427 = r66425 <= r66426;
double r66428 = exp(r66425);
double r66429 = 1.0;
double r66430 = r66428 - r66429;
double r66431 = 1.0;
double r66432 = r66431 / r66425;
double r66433 = r66430 * r66432;
double r66434 = 2.0;
double r66435 = pow(r66425, r66434);
double r66436 = 0.16666666666666666;
double r66437 = r66425 * r66436;
double r66438 = 0.5;
double r66439 = r66437 + r66438;
double r66440 = r66435 * r66439;
double r66441 = r66440 + r66425;
double r66442 = r66441 / r66425;
double r66443 = r66427 ? r66433 : r66442;
return r66443;
}




Bits error versus x
Results
| Original | 40.1 |
|---|---|
| Target | 40.6 |
| Herbie | 0.3 |
if x < -0.00013454200281456905Initial program 0.0
rmApplied div-inv0.0
if -0.00013454200281456905 < x Initial program 60.3
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.3
herbie shell --seed 2020059
(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))