\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -1.3427464677546878 \cdot 10^{-4}:\\
\;\;\;\;-1 \cdot \frac{1 - e^{x}}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{6} \cdot {x}^{2} + \left(\frac{1}{2} \cdot x + 1\right)\\
\end{array}double f(double x) {
double r90016 = x;
double r90017 = exp(r90016);
double r90018 = 1.0;
double r90019 = r90017 - r90018;
double r90020 = r90019 / r90016;
return r90020;
}
double f(double x) {
double r90021 = x;
double r90022 = -0.00013427464677546878;
bool r90023 = r90021 <= r90022;
double r90024 = -1.0;
double r90025 = 1.0;
double r90026 = exp(r90021);
double r90027 = r90025 - r90026;
double r90028 = r90027 / r90021;
double r90029 = r90024 * r90028;
double r90030 = 0.16666666666666666;
double r90031 = 2.0;
double r90032 = pow(r90021, r90031);
double r90033 = r90030 * r90032;
double r90034 = 0.5;
double r90035 = r90034 * r90021;
double r90036 = 1.0;
double r90037 = r90035 + r90036;
double r90038 = r90033 + r90037;
double r90039 = r90023 ? r90029 : r90038;
return r90039;
}




Bits error versus x
Results
| Original | 39.8 |
|---|---|
| Target | 40.3 |
| Herbie | 0.3 |
if x < -0.00013427464677546878Initial program 0.1
Taylor expanded around -inf 0.1
if -0.00013427464677546878 < x Initial program 60.3
Taylor expanded around 0 0.4
Final simplification0.3
herbie shell --seed 2020081
(FPCore (x)
:name "Kahan's exp quotient"
:precision binary64
:herbie-target
(if (and (< x 1) (> x -1)) (/ (- (exp x) 1) (log (exp x))) (/ (- (exp x) 1) x))
(/ (- (exp x) 1) x))