e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le -0.00565259617492738353:\\
\;\;\;\;\frac{e^{2 \cdot \left(x \cdot a\right)} - 1 \cdot 1}{e^{a \cdot x} + 1}\\
\mathbf{elif}\;a \cdot x \le 6.429099761039471 \cdot 10^{-102}:\\
\;\;\;\;\frac{1}{2} \cdot \left({a}^{2} \cdot {x}^{2}\right) + a \cdot x\\
\mathbf{else}:\\
\;\;\;\;x \cdot \left(a + x \cdot \left(\frac{1}{2} \cdot {a}^{2} + \left(\frac{1}{6} \cdot {a}^{3}\right) \cdot x\right)\right)\\
\end{array}double f(double a, double x) {
double r85415 = a;
double r85416 = x;
double r85417 = r85415 * r85416;
double r85418 = exp(r85417);
double r85419 = 1.0;
double r85420 = r85418 - r85419;
return r85420;
}
double f(double a, double x) {
double r85421 = a;
double r85422 = x;
double r85423 = r85421 * r85422;
double r85424 = -0.0056525961749273835;
bool r85425 = r85423 <= r85424;
double r85426 = 2.0;
double r85427 = r85422 * r85421;
double r85428 = r85426 * r85427;
double r85429 = exp(r85428);
double r85430 = 1.0;
double r85431 = r85430 * r85430;
double r85432 = r85429 - r85431;
double r85433 = exp(r85423);
double r85434 = r85433 + r85430;
double r85435 = r85432 / r85434;
double r85436 = 6.429099761039471e-102;
bool r85437 = r85423 <= r85436;
double r85438 = 0.5;
double r85439 = pow(r85421, r85426);
double r85440 = pow(r85422, r85426);
double r85441 = r85439 * r85440;
double r85442 = r85438 * r85441;
double r85443 = r85442 + r85423;
double r85444 = r85438 * r85439;
double r85445 = 0.16666666666666666;
double r85446 = 3.0;
double r85447 = pow(r85421, r85446);
double r85448 = r85445 * r85447;
double r85449 = r85448 * r85422;
double r85450 = r85444 + r85449;
double r85451 = r85422 * r85450;
double r85452 = r85421 + r85451;
double r85453 = r85422 * r85452;
double r85454 = r85437 ? r85443 : r85453;
double r85455 = r85425 ? r85435 : r85454;
return r85455;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.7 |
|---|---|
| Target | 0.2 |
| Herbie | 5.3 |
if (* a x) < -0.0056525961749273835Initial program 0.0
rmApplied flip--0.0
Simplified0.0
if -0.0056525961749273835 < (* a x) < 6.429099761039471e-102Initial program 42.7
Taylor expanded around 0 10.6
Simplified5.4
Taylor expanded around 0 5.6
if 6.429099761039471e-102 < (* a x) Initial program 53.5
Taylor expanded around 0 35.0
Simplified20.8
Final simplification5.3
herbie shell --seed 2020042
(FPCore (a x)
:name "expax (section 3.5)"
:precision binary64
:herbie-expected 14
:herbie-target
(if (< (fabs (* a x)) 0.1) (* (* a x) (+ 1 (+ (/ (* a x) 2) (/ (pow (* a x) 2) 6)))) (- (exp (* a x)) 1))
(- (exp (* a x)) 1))