\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -1.67759019414094238 \cdot 10^{-4}:\\
\;\;\;\;\frac{e^{x}}{x} - \frac{1}{x}\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\sqrt[3]{\sqrt[3]{\frac{1}{6} \cdot {x}^{2} + \left(\frac{1}{2} \cdot x + 1\right)}} \cdot \sqrt[3]{\sqrt[3]{\frac{1}{6} \cdot {x}^{2} + \left(\frac{1}{2} \cdot x + 1\right)}}\right) \cdot \sqrt[3]{\sqrt[3]{\frac{1}{6} \cdot {x}^{2} + \left(\frac{1}{2} \cdot x + 1\right)}}\right) \cdot \left(\frac{1}{36} \cdot {x}^{2} + \left(\frac{1}{6} \cdot x + 1\right)\right)\right) \cdot \sqrt[3]{\frac{1}{6} \cdot {x}^{2} + \left(\frac{1}{2} \cdot x + 1\right)}\\
\end{array}double f(double x) {
double r97175 = x;
double r97176 = exp(r97175);
double r97177 = 1.0;
double r97178 = r97176 - r97177;
double r97179 = r97178 / r97175;
return r97179;
}
double f(double x) {
double r97180 = x;
double r97181 = -0.00016775901941409424;
bool r97182 = r97180 <= r97181;
double r97183 = exp(r97180);
double r97184 = r97183 / r97180;
double r97185 = 1.0;
double r97186 = r97185 / r97180;
double r97187 = r97184 - r97186;
double r97188 = 0.16666666666666666;
double r97189 = 2.0;
double r97190 = pow(r97180, r97189);
double r97191 = r97188 * r97190;
double r97192 = 0.5;
double r97193 = r97192 * r97180;
double r97194 = 1.0;
double r97195 = r97193 + r97194;
double r97196 = r97191 + r97195;
double r97197 = cbrt(r97196);
double r97198 = cbrt(r97197);
double r97199 = r97198 * r97198;
double r97200 = r97199 * r97198;
double r97201 = 0.027777777777777776;
double r97202 = r97201 * r97190;
double r97203 = r97188 * r97180;
double r97204 = r97203 + r97194;
double r97205 = r97202 + r97204;
double r97206 = r97200 * r97205;
double r97207 = r97206 * r97197;
double r97208 = r97182 ? r97187 : r97207;
return r97208;
}




Bits error versus x
Results
| Original | 40.0 |
|---|---|
| Target | 40.5 |
| Herbie | 0.4 |
if x < -0.00016775901941409424Initial program 0.1
rmApplied div-sub0.1
if -0.00016775901941409424 < x Initial program 60.0
Taylor expanded around 0 0.5
rmApplied add-cube-cbrt0.5
rmApplied add-cube-cbrt0.5
Taylor expanded around 0 0.5
Final simplification0.4
herbie shell --seed 2020046
(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))