\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -0.00019562550875617412:\\
\;\;\;\;\frac{1}{\frac{\left(1 + e^{x}\right) \cdot x}{e^{x} \cdot e^{x} - 1}}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{6} \cdot x + \frac{1}{2}\right) \cdot x + 1\\
\end{array}double f(double x) {
double r3725503 = x;
double r3725504 = exp(r3725503);
double r3725505 = 1.0;
double r3725506 = r3725504 - r3725505;
double r3725507 = r3725506 / r3725503;
return r3725507;
}
double f(double x) {
double r3725508 = x;
double r3725509 = -0.00019562550875617412;
bool r3725510 = r3725508 <= r3725509;
double r3725511 = 1.0;
double r3725512 = exp(r3725508);
double r3725513 = r3725511 + r3725512;
double r3725514 = r3725513 * r3725508;
double r3725515 = r3725512 * r3725512;
double r3725516 = r3725515 - r3725511;
double r3725517 = r3725514 / r3725516;
double r3725518 = r3725511 / r3725517;
double r3725519 = 0.16666666666666666;
double r3725520 = r3725519 * r3725508;
double r3725521 = 0.5;
double r3725522 = r3725520 + r3725521;
double r3725523 = r3725522 * r3725508;
double r3725524 = r3725523 + r3725511;
double r3725525 = r3725510 ? r3725518 : r3725524;
return r3725525;
}




Bits error versus x
Results
| Original | 39.6 |
|---|---|
| Target | 38.8 |
| Herbie | 0.4 |
if x < -0.00019562550875617412Initial program 0.1
rmApplied flip--0.1
Applied associate-/l/0.1
rmApplied clear-num0.1
if -0.00019562550875617412 < x Initial program 60.0
Taylor expanded around 0 0.5
Simplified0.5
Final simplification0.4
herbie shell --seed 2019162
(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))