\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -731.1697091805538093467475846409797668457:\\
\;\;\;\;\sqrt{\frac{e^{x}}{x}} \cdot \sqrt{\frac{e^{x}}{x}} - \frac{1}{x}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{2} + x \cdot \frac{1}{6}\right) \cdot x + 1\\
\end{array}double f(double x) {
double r6782788 = x;
double r6782789 = exp(r6782788);
double r6782790 = 1.0;
double r6782791 = r6782789 - r6782790;
double r6782792 = r6782791 / r6782788;
return r6782792;
}
double f(double x) {
double r6782793 = x;
double r6782794 = -731.1697091805538;
bool r6782795 = r6782793 <= r6782794;
double r6782796 = exp(r6782793);
double r6782797 = r6782796 / r6782793;
double r6782798 = sqrt(r6782797);
double r6782799 = r6782798 * r6782798;
double r6782800 = 1.0;
double r6782801 = r6782800 / r6782793;
double r6782802 = r6782799 - r6782801;
double r6782803 = 0.5;
double r6782804 = 0.16666666666666666;
double r6782805 = r6782793 * r6782804;
double r6782806 = r6782803 + r6782805;
double r6782807 = r6782806 * r6782793;
double r6782808 = 1.0;
double r6782809 = r6782807 + r6782808;
double r6782810 = r6782795 ? r6782802 : r6782809;
return r6782810;
}




Bits error versus x
Results
| Original | 39.6 |
|---|---|
| Target | 40.0 |
| Herbie | 0.6 |
if x < -731.1697091805538Initial program 0
rmApplied div-sub0
rmApplied add-sqr-sqrt0
if -731.1697091805538 < x Initial program 59.4
Taylor expanded around 0 0.9
Simplified0.9
Final simplification0.6
herbie shell --seed 2019170
(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))