\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -0.00023107496311143165:\\
\;\;\;\;\frac{e^{x}}{x} - \frac{1}{x}\\
\mathbf{else}:\\
\;\;\;\;1 + \left(\frac{1}{2} + x \cdot \frac{1}{6}\right) \cdot x\\
\end{array}double f(double x) {
double r1274717 = x;
double r1274718 = exp(r1274717);
double r1274719 = 1.0;
double r1274720 = r1274718 - r1274719;
double r1274721 = r1274720 / r1274717;
return r1274721;
}
double f(double x) {
double r1274722 = x;
double r1274723 = -0.00023107496311143165;
bool r1274724 = r1274722 <= r1274723;
double r1274725 = exp(r1274722);
double r1274726 = r1274725 / r1274722;
double r1274727 = 1.0;
double r1274728 = r1274727 / r1274722;
double r1274729 = r1274726 - r1274728;
double r1274730 = 0.5;
double r1274731 = 0.16666666666666666;
double r1274732 = r1274722 * r1274731;
double r1274733 = r1274730 + r1274732;
double r1274734 = r1274733 * r1274722;
double r1274735 = r1274727 + r1274734;
double r1274736 = r1274724 ? r1274729 : r1274735;
return r1274736;
}




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