\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -0.00010944133059785852:\\
\;\;\;\;\frac{\frac{-1 + e^{\left(\left(x + x\right) + x\right) + \left(\left(x + x\right) + x\right)}}{\left(1 + e^{x + x}\right) + e^{x + x} \cdot e^{x + x}}}{x \cdot \left(1 + e^{x}\right)}\\
\mathbf{else}:\\
\;\;\;\;1 + x \cdot \left(x \cdot \frac{1}{6} + \frac{1}{2}\right)\\
\end{array}double f(double x) {
double r3545371 = x;
double r3545372 = exp(r3545371);
double r3545373 = 1.0;
double r3545374 = r3545372 - r3545373;
double r3545375 = r3545374 / r3545371;
return r3545375;
}
double f(double x) {
double r3545376 = x;
double r3545377 = -0.00010944133059785852;
bool r3545378 = r3545376 <= r3545377;
double r3545379 = -1.0;
double r3545380 = r3545376 + r3545376;
double r3545381 = r3545380 + r3545376;
double r3545382 = r3545381 + r3545381;
double r3545383 = exp(r3545382);
double r3545384 = r3545379 + r3545383;
double r3545385 = 1.0;
double r3545386 = exp(r3545380);
double r3545387 = r3545385 + r3545386;
double r3545388 = r3545386 * r3545386;
double r3545389 = r3545387 + r3545388;
double r3545390 = r3545384 / r3545389;
double r3545391 = exp(r3545376);
double r3545392 = r3545385 + r3545391;
double r3545393 = r3545376 * r3545392;
double r3545394 = r3545390 / r3545393;
double r3545395 = 0.16666666666666666;
double r3545396 = r3545376 * r3545395;
double r3545397 = 0.5;
double r3545398 = r3545396 + r3545397;
double r3545399 = r3545376 * r3545398;
double r3545400 = r3545385 + r3545399;
double r3545401 = r3545378 ? r3545394 : r3545400;
return r3545401;
}




Bits error versus x
Results
| Original | 39.9 |
|---|---|
| Target | 39.1 |
| Herbie | 0.3 |
if x < -0.00010944133059785852Initial program 0.1
rmApplied flip--0.1
Applied associate-/l/0.1
rmApplied add-exp-log0.1
Simplified0.1
rmApplied flip3--0.1
Simplified0.0
Simplified0.0
if -0.00010944133059785852 < x Initial program 60.2
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.3
herbie shell --seed 2019130
(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))