\frac{e^{x}}{e^{x} - 1}\begin{array}{l}
\mathbf{if}\;e^{x} \le 0.7019935717068964:\\
\;\;\;\;\frac{e^{x}}{\left(\sqrt[3]{e^{x + \left(x + x\right)} - 1} \cdot \sqrt[3]{e^{x + \left(x + x\right)} - 1}\right) \cdot \sqrt[3]{\left(\sqrt{e^{x + \left(x + x\right)}} - 1\right) \cdot \left(\sqrt{e^{x + \left(x + x\right)}} + 1\right)}} \cdot \left(\left(1 + e^{x}\right) + e^{x} \cdot e^{x}\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot \frac{1}{12} + \left(\frac{1}{2} + \frac{1}{x}\right)\\
\end{array}double f(double x) {
double r1879412 = x;
double r1879413 = exp(r1879412);
double r1879414 = 1.0;
double r1879415 = r1879413 - r1879414;
double r1879416 = r1879413 / r1879415;
return r1879416;
}
double f(double x) {
double r1879417 = x;
double r1879418 = exp(r1879417);
double r1879419 = 0.7019935717068964;
bool r1879420 = r1879418 <= r1879419;
double r1879421 = r1879417 + r1879417;
double r1879422 = r1879417 + r1879421;
double r1879423 = exp(r1879422);
double r1879424 = 1.0;
double r1879425 = r1879423 - r1879424;
double r1879426 = cbrt(r1879425);
double r1879427 = r1879426 * r1879426;
double r1879428 = sqrt(r1879423);
double r1879429 = r1879428 - r1879424;
double r1879430 = r1879428 + r1879424;
double r1879431 = r1879429 * r1879430;
double r1879432 = cbrt(r1879431);
double r1879433 = r1879427 * r1879432;
double r1879434 = r1879418 / r1879433;
double r1879435 = r1879424 + r1879418;
double r1879436 = r1879418 * r1879418;
double r1879437 = r1879435 + r1879436;
double r1879438 = r1879434 * r1879437;
double r1879439 = 0.08333333333333333;
double r1879440 = r1879417 * r1879439;
double r1879441 = 0.5;
double r1879442 = r1879424 / r1879417;
double r1879443 = r1879441 + r1879442;
double r1879444 = r1879440 + r1879443;
double r1879445 = r1879420 ? r1879438 : r1879444;
return r1879445;
}




Bits error versus x
Results
| Original | 40.0 |
|---|---|
| Target | 39.6 |
| Herbie | 0.7 |
if (exp x) < 0.7019935717068964Initial program 0.0
rmApplied flip3--0.0
Applied associate-/r/0.0
Simplified0.0
rmApplied add-cube-cbrt0.0
rmApplied *-un-lft-identity0.0
Applied add-sqr-sqrt0.0
Applied difference-of-squares0.0
if 0.7019935717068964 < (exp x) Initial program 59.9
Taylor expanded around 0 1.1
Final simplification0.7
herbie shell --seed 2019151
(FPCore (x)
:name "expq2 (section 3.11)"
:herbie-target
(/ 1 (- 1 (exp (- x))))
(/ (exp x) (- (exp x) 1)))