\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -1.709877439748755422518206037452159762324 \cdot 10^{-4}:\\
\;\;\;\;\frac{{\left(e^{x}\right)}^{3} - {1}^{3}}{\left(1 \cdot \left(1 + e^{x}\right) + e^{x + x}\right) \cdot x}\\
\mathbf{else}:\\
\;\;\;\;\frac{{x}^{2} \cdot \left(x \cdot \frac{1}{6} + \frac{1}{2}\right) + x}{x}\\
\end{array}double f(double x) {
double r71681 = x;
double r71682 = exp(r71681);
double r71683 = 1.0;
double r71684 = r71682 - r71683;
double r71685 = r71684 / r71681;
return r71685;
}
double f(double x) {
double r71686 = x;
double r71687 = -0.00017098774397487554;
bool r71688 = r71686 <= r71687;
double r71689 = exp(r71686);
double r71690 = 3.0;
double r71691 = pow(r71689, r71690);
double r71692 = 1.0;
double r71693 = pow(r71692, r71690);
double r71694 = r71691 - r71693;
double r71695 = r71692 + r71689;
double r71696 = r71692 * r71695;
double r71697 = r71686 + r71686;
double r71698 = exp(r71697);
double r71699 = r71696 + r71698;
double r71700 = r71699 * r71686;
double r71701 = r71694 / r71700;
double r71702 = 2.0;
double r71703 = pow(r71686, r71702);
double r71704 = 0.16666666666666666;
double r71705 = r71686 * r71704;
double r71706 = 0.5;
double r71707 = r71705 + r71706;
double r71708 = r71703 * r71707;
double r71709 = r71708 + r71686;
double r71710 = r71709 / r71686;
double r71711 = r71688 ? r71701 : r71710;
return r71711;
}




Bits error versus x
Results
| Original | 39.5 |
|---|---|
| Target | 40.0 |
| Herbie | 0.3 |
if x < -0.00017098774397487554Initial program 0.0
rmApplied flip3--0.0
Applied associate-/l/0.0
Simplified0.0
if -0.00017098774397487554 < x Initial program 60.2
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.3
herbie shell --seed 2019354
(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))