\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -0.00010099176561525294:\\
\;\;\;\;\log \left(e^{\frac{e^{\left(x + x\right) + x} + -1}{1 + e^{x} \cdot \left(e^{x} + 1\right)}}\right) \cdot \frac{1}{x}\\
\mathbf{else}:\\
\;\;\;\;1 + \left(\frac{1}{2} + x \cdot \frac{1}{6}\right) \cdot x\\
\end{array}double f(double x) {
double r10230170 = x;
double r10230171 = exp(r10230170);
double r10230172 = 1.0;
double r10230173 = r10230171 - r10230172;
double r10230174 = r10230173 / r10230170;
return r10230174;
}
double f(double x) {
double r10230175 = x;
double r10230176 = -0.00010099176561525294;
bool r10230177 = r10230175 <= r10230176;
double r10230178 = r10230175 + r10230175;
double r10230179 = r10230178 + r10230175;
double r10230180 = exp(r10230179);
double r10230181 = -1.0;
double r10230182 = r10230180 + r10230181;
double r10230183 = 1.0;
double r10230184 = exp(r10230175);
double r10230185 = r10230184 + r10230183;
double r10230186 = r10230184 * r10230185;
double r10230187 = r10230183 + r10230186;
double r10230188 = r10230182 / r10230187;
double r10230189 = exp(r10230188);
double r10230190 = log(r10230189);
double r10230191 = r10230183 / r10230175;
double r10230192 = r10230190 * r10230191;
double r10230193 = 0.5;
double r10230194 = 0.16666666666666666;
double r10230195 = r10230175 * r10230194;
double r10230196 = r10230193 + r10230195;
double r10230197 = r10230196 * r10230175;
double r10230198 = r10230183 + r10230197;
double r10230199 = r10230177 ? r10230192 : r10230198;
return r10230199;
}




Bits error versus x
Results
| Original | 39.5 |
|---|---|
| Target | 38.7 |
| Herbie | 0.4 |
if x < -0.00010099176561525294Initial program 0.1
rmApplied flip3--0.1
Applied associate-/l/0.1
Simplified0.1
rmApplied *-un-lft-identity0.1
Applied times-frac0.1
Simplified0.1
rmApplied add-log-exp0.1
if -0.00010099176561525294 < x Initial program 60.0
Taylor expanded around 0 0.6
Simplified0.6
Final simplification0.4
herbie shell --seed 2019124
(FPCore (x)
:name "Kahan's exp quotient"
:herbie-target
(if (and (< x 1) (> x -1)) (/ (- (exp x) 1) (log (exp x))) (/ (- (exp x) 1) x))
(/ (- (exp x) 1) x))