\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -1.470771277477194002771682113106521683221 \cdot 10^{-4}:\\
\;\;\;\;\frac{\frac{e^{x + x} \cdot e^{x + x} - \left(1 \cdot 1\right) \cdot \left(1 \cdot 1\right)}{\mathsf{fma}\left(1, 1, e^{2 \cdot x}\right) \cdot \left(1 + e^{x}\right)}}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left({x}^{2}, \mathsf{fma}\left(x, \frac{1}{6}, \frac{1}{2}\right), x\right)}{x}\\
\end{array}double f(double x) {
double r47167 = x;
double r47168 = exp(r47167);
double r47169 = 1.0;
double r47170 = r47168 - r47169;
double r47171 = r47170 / r47167;
return r47171;
}
double f(double x) {
double r47172 = x;
double r47173 = -0.0001470771277477194;
bool r47174 = r47172 <= r47173;
double r47175 = r47172 + r47172;
double r47176 = exp(r47175);
double r47177 = r47176 * r47176;
double r47178 = 1.0;
double r47179 = r47178 * r47178;
double r47180 = r47179 * r47179;
double r47181 = r47177 - r47180;
double r47182 = 2.0;
double r47183 = r47182 * r47172;
double r47184 = exp(r47183);
double r47185 = fma(r47178, r47178, r47184);
double r47186 = exp(r47172);
double r47187 = r47178 + r47186;
double r47188 = r47185 * r47187;
double r47189 = r47181 / r47188;
double r47190 = r47189 / r47172;
double r47191 = pow(r47172, r47182);
double r47192 = 0.16666666666666666;
double r47193 = 0.5;
double r47194 = fma(r47172, r47192, r47193);
double r47195 = fma(r47191, r47194, r47172);
double r47196 = r47195 / r47172;
double r47197 = r47174 ? r47190 : r47196;
return r47197;
}




Bits error versus x
| Original | 39.7 |
|---|---|
| Target | 40.1 |
| Herbie | 0.3 |
if x < -0.0001470771277477194Initial program 0.0
rmApplied flip--0.0
Simplified0.0
Simplified0.0
rmApplied flip--0.0
Applied associate-/l/0.0
Simplified0.0
if -0.0001470771277477194 < x Initial program 60.1
Taylor expanded around 0 0.5
Simplified0.5
Final simplification0.3
herbie shell --seed 2019322 +o rules:numerics
(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))