\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le \frac{-1858094157389103}{9223372036854775808}:\\
\;\;\;\;\frac{\left(\sqrt{e^{x}} + \sqrt{1}\right) \cdot \left(\sqrt{e^{x}} - \sqrt{1}\right)}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{6} \cdot {x}^{2} + \left(\frac{1}{2} \cdot x + 1\right)\\
\end{array}double f(double x) {
double r95079 = x;
double r95080 = exp(r95079);
double r95081 = 1.0;
double r95082 = r95080 - r95081;
double r95083 = r95082 / r95079;
return r95083;
}
double f(double x) {
double r95084 = x;
double r95085 = -1858094157389103.0;
double r95086 = 9.223372036854776e+18;
double r95087 = r95085 / r95086;
bool r95088 = r95084 <= r95087;
double r95089 = exp(r95084);
double r95090 = sqrt(r95089);
double r95091 = 1.0;
double r95092 = sqrt(r95091);
double r95093 = r95090 + r95092;
double r95094 = r95090 - r95092;
double r95095 = r95093 * r95094;
double r95096 = r95095 / r95084;
double r95097 = 1.0;
double r95098 = 6.0;
double r95099 = r95097 / r95098;
double r95100 = 2.0;
double r95101 = pow(r95084, r95100);
double r95102 = r95099 * r95101;
double r95103 = r95097 / r95100;
double r95104 = r95103 * r95084;
double r95105 = r95104 + r95097;
double r95106 = r95102 + r95105;
double r95107 = r95088 ? r95096 : r95106;
return r95107;
}




Bits error versus x
Results
| Original | 39.7 |
|---|---|
| Target | 40.1 |
| Herbie | 0.3 |
if x < -0.00020145497221238883Initial program 0.0
rmApplied add-sqr-sqrt0.0
Applied add-sqr-sqrt0.1
Applied difference-of-squares0.1
if -0.00020145497221238883 < x Initial program 60.1
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.3
herbie shell --seed 2019303
(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))