\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -1.528938887920509718306577573443405526632 \cdot 10^{-4}:\\
\;\;\;\;\frac{\frac{e^{x + x} - 1 \cdot 1}{e^{x} + 1}}{x}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot x\right) + 1\\
\end{array}double f(double x) {
double r63639 = x;
double r63640 = exp(r63639);
double r63641 = 1.0;
double r63642 = r63640 - r63641;
double r63643 = r63642 / r63639;
return r63643;
}
double f(double x) {
double r63644 = x;
double r63645 = -0.00015289388879205097;
bool r63646 = r63644 <= r63645;
double r63647 = r63644 + r63644;
double r63648 = exp(r63647);
double r63649 = 1.0;
double r63650 = r63649 * r63649;
double r63651 = r63648 - r63650;
double r63652 = exp(r63644);
double r63653 = r63652 + r63649;
double r63654 = r63651 / r63653;
double r63655 = r63654 / r63644;
double r63656 = 0.5;
double r63657 = 0.16666666666666666;
double r63658 = r63657 * r63644;
double r63659 = r63656 + r63658;
double r63660 = r63644 * r63659;
double r63661 = 1.0;
double r63662 = r63660 + r63661;
double r63663 = r63646 ? r63655 : r63662;
return r63663;
}




Bits error versus x
Results
| Original | 39.9 |
|---|---|
| Target | 40.4 |
| Herbie | 0.3 |
if x < -0.00015289388879205097Initial program 0.0
rmApplied flip--0.0
Simplified0.0
if -0.00015289388879205097 < x Initial program 60.1
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.3
herbie shell --seed 2019212
(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))