\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -1.542453242293575935237953666856469681079 \cdot 10^{-4}:\\
\;\;\;\;\frac{\frac{e^{3 \cdot x}}{\left(e^{x} \cdot 1 + 1 \cdot 1\right) + e^{x} \cdot e^{x}} - \frac{\left(1 \cdot 1\right) \cdot 1}{\left(e^{x} \cdot 1 + 1 \cdot 1\right) + e^{x} \cdot e^{x}}}{x}\\
\mathbf{else}:\\
\;\;\;\;1 + \left(\frac{1}{2} + x \cdot \frac{1}{6}\right) \cdot x\\
\end{array}double f(double x) {
double r3859499 = x;
double r3859500 = exp(r3859499);
double r3859501 = 1.0;
double r3859502 = r3859500 - r3859501;
double r3859503 = r3859502 / r3859499;
return r3859503;
}
double f(double x) {
double r3859504 = x;
double r3859505 = -0.0001542453242293576;
bool r3859506 = r3859504 <= r3859505;
double r3859507 = 3.0;
double r3859508 = r3859507 * r3859504;
double r3859509 = exp(r3859508);
double r3859510 = exp(r3859504);
double r3859511 = 1.0;
double r3859512 = r3859510 * r3859511;
double r3859513 = r3859511 * r3859511;
double r3859514 = r3859512 + r3859513;
double r3859515 = r3859510 * r3859510;
double r3859516 = r3859514 + r3859515;
double r3859517 = r3859509 / r3859516;
double r3859518 = r3859513 * r3859511;
double r3859519 = r3859518 / r3859516;
double r3859520 = r3859517 - r3859519;
double r3859521 = r3859520 / r3859504;
double r3859522 = 1.0;
double r3859523 = 0.5;
double r3859524 = 0.16666666666666666;
double r3859525 = r3859504 * r3859524;
double r3859526 = r3859523 + r3859525;
double r3859527 = r3859526 * r3859504;
double r3859528 = r3859522 + r3859527;
double r3859529 = r3859506 ? r3859521 : r3859528;
return r3859529;
}




Bits error versus x
Results
| Original | 39.6 |
|---|---|
| Target | 40.0 |
| Herbie | 0.3 |
if x < -0.0001542453242293576Initial program 0.1
rmApplied flip3--0.1
Simplified0.0
rmApplied div-sub0.1
if -0.0001542453242293576 < x Initial program 60.2
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.3
herbie shell --seed 2019174
(FPCore (x)
:name "Kahan's exp quotient"
:herbie-target
(if (and (< x 1.0) (> x -1.0)) (/ (- (exp x) 1.0) (log (exp x))) (/ (- (exp x) 1.0) x))
(/ (- (exp x) 1.0) x))