\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -1.42560295216019643 \cdot 10^{-4}:\\
\;\;\;\;\frac{\frac{\frac{e^{x \cdot 4}}{e^{x + x} + 1 \cdot 1}}{e^{x} + 1} - \frac{\frac{{1}^{4}}{e^{x + x} + 1 \cdot 1}}{e^{x} + 1}}{x}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot x\right) + 1\\
\end{array}double f(double x) {
double r74527 = x;
double r74528 = exp(r74527);
double r74529 = 1.0;
double r74530 = r74528 - r74529;
double r74531 = r74530 / r74527;
return r74531;
}
double f(double x) {
double r74532 = x;
double r74533 = -0.00014256029521601964;
bool r74534 = r74532 <= r74533;
double r74535 = 4.0;
double r74536 = r74532 * r74535;
double r74537 = exp(r74536);
double r74538 = r74532 + r74532;
double r74539 = exp(r74538);
double r74540 = 1.0;
double r74541 = r74540 * r74540;
double r74542 = r74539 + r74541;
double r74543 = r74537 / r74542;
double r74544 = exp(r74532);
double r74545 = r74544 + r74540;
double r74546 = r74543 / r74545;
double r74547 = pow(r74540, r74535);
double r74548 = r74547 / r74542;
double r74549 = r74548 / r74545;
double r74550 = r74546 - r74549;
double r74551 = r74550 / r74532;
double r74552 = 0.5;
double r74553 = 0.16666666666666666;
double r74554 = r74553 * r74532;
double r74555 = r74552 + r74554;
double r74556 = r74532 * r74555;
double r74557 = 1.0;
double r74558 = r74556 + r74557;
double r74559 = r74534 ? r74551 : r74558;
return r74559;
}




Bits error versus x
Results
| Original | 40.0 |
|---|---|
| Target | 40.5 |
| Herbie | 0.3 |
if x < -0.00014256029521601964Initial program 0.1
rmApplied flip--0.1
Simplified0.1
rmApplied flip--0.1
Simplified0.0
rmApplied div-sub0.1
Applied div-sub0.1
if -0.00014256029521601964 < x Initial program 60.3
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.3
herbie shell --seed 2019198
(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))