\frac{e^{x} - 1}{x}\begin{array}{l}
\mathbf{if}\;x \le -1.656199158469729814779219934095522148709 \cdot 10^{-4}:\\
\;\;\;\;-1 \cdot \frac{1 - e^{x}}{x}\\
\mathbf{else}:\\
\;\;\;\;\log \left(e^{\frac{1}{6} \cdot {x}^{2}}\right) + \left(\frac{1}{2} \cdot x + 1\right)\\
\end{array}double f(double x) {
double r96130 = x;
double r96131 = exp(r96130);
double r96132 = 1.0;
double r96133 = r96131 - r96132;
double r96134 = r96133 / r96130;
return r96134;
}
double f(double x) {
double r96135 = x;
double r96136 = -0.00016561991584697298;
bool r96137 = r96135 <= r96136;
double r96138 = -1.0;
double r96139 = 1.0;
double r96140 = exp(r96135);
double r96141 = r96139 - r96140;
double r96142 = r96141 / r96135;
double r96143 = r96138 * r96142;
double r96144 = 0.16666666666666666;
double r96145 = 2.0;
double r96146 = pow(r96135, r96145);
double r96147 = r96144 * r96146;
double r96148 = exp(r96147);
double r96149 = log(r96148);
double r96150 = 0.5;
double r96151 = r96150 * r96135;
double r96152 = 1.0;
double r96153 = r96151 + r96152;
double r96154 = r96149 + r96153;
double r96155 = r96137 ? r96143 : r96154;
return r96155;
}




Bits error versus x
Results
| Original | 39.9 |
|---|---|
| Target | 40.4 |
| Herbie | 0.4 |
if x < -0.00016561991584697298Initial program 0.1
Taylor expanded around -inf 0.1
if -0.00016561991584697298 < x Initial program 60.0
Taylor expanded around 0 0.6
rmApplied add-log-exp0.6
Final simplification0.4
herbie shell --seed 2019318
(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))