\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -1.55293744862148258 \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 r95302 = x;
double r95303 = exp(r95302);
double r95304 = 1.0;
double r95305 = r95303 - r95304;
double r95306 = r95305 / r95302;
return r95306;
}
double f(double x) {
double r95307 = x;
double r95308 = -0.00015529374486214826;
bool r95309 = r95307 <= r95308;
double r95310 = -1.0;
double r95311 = 1.0;
double r95312 = exp(r95307);
double r95313 = r95311 - r95312;
double r95314 = r95313 / r95307;
double r95315 = r95310 * r95314;
double r95316 = 0.16666666666666666;
double r95317 = 2.0;
double r95318 = pow(r95307, r95317);
double r95319 = r95316 * r95318;
double r95320 = 0.5;
double r95321 = r95320 * r95307;
double r95322 = 1.0;
double r95323 = r95321 + r95322;
double r95324 = r95319 + r95323;
double r95325 = r95309 ? r95315 : r95324;
return r95325;
}




Bits error versus x
Results
| Original | 40.2 |
|---|---|
| Target | 40.7 |
| Herbie | 0.3 |
if x < -0.00015529374486214826Initial program 0.1
Taylor expanded around -inf 0.1
if -0.00015529374486214826 < x Initial program 60.2
Taylor expanded around 0 0.5
Final simplification0.3
herbie shell --seed 2020003
(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))