\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -1.5819896650017998 \cdot 10^{-4}:\\
\;\;\;\;\frac{\log \left(e^{e^{x} - 1}\right)}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{{\left(\frac{1}{6} \cdot {x}^{2}\right)}^{3} + {\left(\frac{1}{2} \cdot x + 1\right)}^{3}}{\left(\frac{1}{2} \cdot x + 1\right) \cdot \left(\left(\frac{1}{2} \cdot x + 1\right) - \frac{1}{6} \cdot {x}^{2}\right) + \frac{1}{36} \cdot \left({x}^{2} \cdot {x}^{2}\right)}\\
\end{array}double f(double x) {
double r109508 = x;
double r109509 = exp(r109508);
double r109510 = 1.0;
double r109511 = r109509 - r109510;
double r109512 = r109511 / r109508;
return r109512;
}
double f(double x) {
double r109513 = x;
double r109514 = -0.00015819896650017998;
bool r109515 = r109513 <= r109514;
double r109516 = exp(r109513);
double r109517 = 1.0;
double r109518 = r109516 - r109517;
double r109519 = exp(r109518);
double r109520 = log(r109519);
double r109521 = r109520 / r109513;
double r109522 = 0.16666666666666666;
double r109523 = 2.0;
double r109524 = pow(r109513, r109523);
double r109525 = r109522 * r109524;
double r109526 = 3.0;
double r109527 = pow(r109525, r109526);
double r109528 = 0.5;
double r109529 = r109528 * r109513;
double r109530 = 1.0;
double r109531 = r109529 + r109530;
double r109532 = pow(r109531, r109526);
double r109533 = r109527 + r109532;
double r109534 = r109531 - r109525;
double r109535 = r109531 * r109534;
double r109536 = 0.027777777777777776;
double r109537 = r109524 * r109524;
double r109538 = r109536 * r109537;
double r109539 = r109535 + r109538;
double r109540 = r109533 / r109539;
double r109541 = r109515 ? r109521 : r109540;
return r109541;
}




Bits error versus x
Results
| Original | 39.7 |
|---|---|
| Target | 40.0 |
| Herbie | 0.4 |
if x < -0.00015819896650017998Initial program 0.0
rmApplied add-log-exp0.0
Applied add-log-exp0.0
Applied diff-log0.0
Simplified0.0
if -0.00015819896650017998 < x Initial program 59.8
Taylor expanded around 0 0.6
rmApplied flip3-+0.6
Simplified0.6
Final simplification0.4
herbie shell --seed 2020034
(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))