\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -1.670496352740291341569534022681864371407 \cdot 10^{-4}:\\
\;\;\;\;\left(1 \cdot 1 - \left(e^{x} + 1\right) \cdot e^{x}\right) \cdot \frac{{\left({\left(e^{x}\right)}^{3}\right)}^{3} - {\left({1}^{3}\right)}^{3}}{\left(x \cdot \left({\left(e^{x}\right)}^{6} + \left({1}^{6} + {1}^{3} \cdot {\left(e^{x}\right)}^{3}\right)\right)\right) \cdot \left({1}^{4} - {\left(e^{x}\right)}^{2} \cdot {\left(e^{x} + 1\right)}^{2}\right)}\\
\mathbf{else}:\\
\;\;\;\;1 + \left(x \cdot \frac{1}{6} + \frac{1}{2}\right) \cdot x\\
\end{array}double f(double x) {
double r71113 = x;
double r71114 = exp(r71113);
double r71115 = 1.0;
double r71116 = r71114 - r71115;
double r71117 = r71116 / r71113;
return r71117;
}
double f(double x) {
double r71118 = x;
double r71119 = -0.00016704963527402913;
bool r71120 = r71118 <= r71119;
double r71121 = 1.0;
double r71122 = r71121 * r71121;
double r71123 = exp(r71118);
double r71124 = r71123 + r71121;
double r71125 = r71124 * r71123;
double r71126 = r71122 - r71125;
double r71127 = 3.0;
double r71128 = pow(r71123, r71127);
double r71129 = pow(r71128, r71127);
double r71130 = pow(r71121, r71127);
double r71131 = pow(r71130, r71127);
double r71132 = r71129 - r71131;
double r71133 = 6.0;
double r71134 = pow(r71123, r71133);
double r71135 = pow(r71121, r71133);
double r71136 = r71130 * r71128;
double r71137 = r71135 + r71136;
double r71138 = r71134 + r71137;
double r71139 = r71118 * r71138;
double r71140 = 4.0;
double r71141 = pow(r71121, r71140);
double r71142 = 2.0;
double r71143 = pow(r71123, r71142);
double r71144 = pow(r71124, r71142);
double r71145 = r71143 * r71144;
double r71146 = r71141 - r71145;
double r71147 = r71139 * r71146;
double r71148 = r71132 / r71147;
double r71149 = r71126 * r71148;
double r71150 = 1.0;
double r71151 = 0.16666666666666666;
double r71152 = r71118 * r71151;
double r71153 = 0.5;
double r71154 = r71152 + r71153;
double r71155 = r71154 * r71118;
double r71156 = r71150 + r71155;
double r71157 = r71120 ? r71149 : r71156;
return r71157;
}




Bits error versus x
Results
| Original | 39.8 |
|---|---|
| Target | 40.2 |
| Herbie | 0.4 |
if x < -0.00016704963527402913Initial program 0.1
rmApplied flip3--0.1
Applied associate-/l/0.1
Simplified0.1
rmApplied flip-+0.1
Applied associate-*r/0.1
Applied associate-/r/0.1
Simplified0.1
rmApplied flip3--0.1
Applied associate-/l/0.1
Simplified0.1
if -0.00016704963527402913 < x Initial program 60.0
Taylor expanded around 0 0.5
Simplified0.5
Final simplification0.4
herbie shell --seed 2019195
(FPCore (x)
:name "Kahan's exp quotient"
:herbie-target
(if (and (< x 1.0) (> x -1.0)) (/ (- (exp x) 1.0) (log (exp x))) (/ (- (exp x) 1.0) x))
(/ (- (exp x) 1.0) x))