\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -2.02234544586829302 \cdot 10^{-4}:\\
\;\;\;\;\frac{\sqrt{e^{x}} + \sqrt{1}}{\frac{x}{\sqrt{e^{x}} - \sqrt{1}}}\\
\mathbf{else}:\\
\;\;\;\;1 + x \cdot \left(x \cdot \frac{1}{6} + \frac{1}{2}\right)\\
\end{array}double f(double x) {
double r98165 = x;
double r98166 = exp(r98165);
double r98167 = 1.0;
double r98168 = r98166 - r98167;
double r98169 = r98168 / r98165;
return r98169;
}
double f(double x) {
double r98170 = x;
double r98171 = -0.0002022345445868293;
bool r98172 = r98170 <= r98171;
double r98173 = exp(r98170);
double r98174 = sqrt(r98173);
double r98175 = 1.0;
double r98176 = sqrt(r98175);
double r98177 = r98174 + r98176;
double r98178 = r98174 - r98176;
double r98179 = r98170 / r98178;
double r98180 = r98177 / r98179;
double r98181 = 1.0;
double r98182 = 0.16666666666666666;
double r98183 = r98170 * r98182;
double r98184 = 0.5;
double r98185 = r98183 + r98184;
double r98186 = r98170 * r98185;
double r98187 = r98181 + r98186;
double r98188 = r98172 ? r98180 : r98187;
return r98188;
}




Bits error versus x
Results
| Original | 40.0 |
|---|---|
| Target | 40.5 |
| Herbie | 0.3 |
if x < -0.0002022345445868293Initial program 0.1
rmApplied add-sqr-sqrt0.1
Applied add-sqr-sqrt0.1
Applied difference-of-squares0.1
Applied associate-/l*0.1
if -0.0002022345445868293 < x Initial program 60.2
Taylor expanded around 0 0.5
Simplified0.5
Final simplification0.3
herbie shell --seed 2020047
(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))