\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -0.00018534463155854764:\\
\;\;\;\;\frac{{\left(e^{x}\right)}^{3} - 1}{x + \left(x + e^{x} \cdot x\right) \cdot e^{x}}\\
\mathbf{else}:\\
\;\;\;\;1 + x \cdot \left(x \cdot \frac{1}{6} + \frac{1}{2}\right)\\
\end{array}double f(double x) {
double r1506517 = x;
double r1506518 = exp(r1506517);
double r1506519 = 1.0;
double r1506520 = r1506518 - r1506519;
double r1506521 = r1506520 / r1506517;
return r1506521;
}
double f(double x) {
double r1506522 = x;
double r1506523 = -0.00018534463155854764;
bool r1506524 = r1506522 <= r1506523;
double r1506525 = exp(r1506522);
double r1506526 = 3.0;
double r1506527 = pow(r1506525, r1506526);
double r1506528 = 1.0;
double r1506529 = r1506527 - r1506528;
double r1506530 = r1506525 * r1506522;
double r1506531 = r1506522 + r1506530;
double r1506532 = r1506531 * r1506525;
double r1506533 = r1506522 + r1506532;
double r1506534 = r1506529 / r1506533;
double r1506535 = 0.16666666666666666;
double r1506536 = r1506522 * r1506535;
double r1506537 = 0.5;
double r1506538 = r1506536 + r1506537;
double r1506539 = r1506522 * r1506538;
double r1506540 = r1506528 + r1506539;
double r1506541 = r1506524 ? r1506534 : r1506540;
return r1506541;
}




Bits error versus x
Results
| Original | 40.4 |
|---|---|
| Target | 39.5 |
| Herbie | 0.2 |
if x < -0.00018534463155854764Initial program 0.1
rmApplied flip3--0.1
Applied associate-/l/0.1
Simplified0.1
if -0.00018534463155854764 < x Initial program 60.2
Taylor expanded around 0 0.3
Simplified0.3
Final simplification0.2
herbie shell --seed 2019154
(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))