e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le -2.126354662771189659841580832377871956851 \cdot 10^{-4}:\\
\;\;\;\;e^{a \cdot x} - 1\\
\mathbf{else}:\\
\;\;\;\;a \cdot x\\
\end{array}double f(double a, double x) {
double r93408 = a;
double r93409 = x;
double r93410 = r93408 * r93409;
double r93411 = exp(r93410);
double r93412 = 1.0;
double r93413 = r93411 - r93412;
return r93413;
}
double f(double a, double x) {
double r93414 = a;
double r93415 = x;
double r93416 = r93414 * r93415;
double r93417 = -0.00021263546627711897;
bool r93418 = r93416 <= r93417;
double r93419 = exp(r93416);
double r93420 = 1.0;
double r93421 = r93419 - r93420;
double r93422 = r93418 ? r93421 : r93416;
return r93422;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.6 |
|---|---|
| Target | 0.2 |
| Herbie | 0.9 |
if (* a x) < -0.00021263546627711897Initial program 0.1
if -0.00021263546627711897 < (* a x) Initial program 44.0
Taylor expanded around 0 14.3
Simplified14.3
Taylor expanded around 0 8.3
Simplified8.3
Taylor expanded around 0 1.3
Final simplification0.9
herbie shell --seed 2019195
(FPCore (a x)
:name "expax (section 3.5)"
:herbie-expected 14
:herbie-target
(if (< (fabs (* a x)) 0.1) (* (* a x) (+ 1.0 (+ (/ (* a x) 2.0) (/ (pow (* a x) 2.0) 6.0)))) (- (exp (* a x)) 1.0))
(- (exp (* a x)) 1.0))