e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le -8.997847041171635 \cdot 10^{-05}:\\
\;\;\;\;\frac{\frac{e^{\left(a \cdot x\right) \cdot 9} + -1}{1 - \left(-1 - e^{3 \cdot \left(a \cdot x\right)}\right) \cdot e^{3 \cdot \left(a \cdot x\right)}}}{e^{a \cdot x} + \left(e^{a \cdot x} \cdot e^{a \cdot x} + 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(\left(a \cdot x\right) \cdot \left(\left(a \cdot x\right) \cdot \frac{1}{2}\right) + \left(\left(\left(a \cdot x\right) \cdot \left(a \cdot x\right)\right) \cdot \left(a \cdot x\right)\right) \cdot \frac{1}{6}\right) + a \cdot x\\
\end{array}double f(double a, double x) {
double r3843691 = a;
double r3843692 = x;
double r3843693 = r3843691 * r3843692;
double r3843694 = exp(r3843693);
double r3843695 = 1.0;
double r3843696 = r3843694 - r3843695;
return r3843696;
}
double f(double a, double x) {
double r3843697 = a;
double r3843698 = x;
double r3843699 = r3843697 * r3843698;
double r3843700 = -8.997847041171635e-05;
bool r3843701 = r3843699 <= r3843700;
double r3843702 = 9.0;
double r3843703 = r3843699 * r3843702;
double r3843704 = exp(r3843703);
double r3843705 = -1.0;
double r3843706 = r3843704 + r3843705;
double r3843707 = 1.0;
double r3843708 = 3.0;
double r3843709 = r3843708 * r3843699;
double r3843710 = exp(r3843709);
double r3843711 = r3843705 - r3843710;
double r3843712 = r3843711 * r3843710;
double r3843713 = r3843707 - r3843712;
double r3843714 = r3843706 / r3843713;
double r3843715 = exp(r3843699);
double r3843716 = r3843715 * r3843715;
double r3843717 = r3843716 + r3843707;
double r3843718 = r3843715 + r3843717;
double r3843719 = r3843714 / r3843718;
double r3843720 = 0.5;
double r3843721 = r3843699 * r3843720;
double r3843722 = r3843699 * r3843721;
double r3843723 = r3843699 * r3843699;
double r3843724 = r3843723 * r3843699;
double r3843725 = 0.16666666666666666;
double r3843726 = r3843724 * r3843725;
double r3843727 = r3843722 + r3843726;
double r3843728 = r3843727 + r3843699;
double r3843729 = r3843701 ? r3843719 : r3843728;
return r3843729;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.3 |
|---|---|
| Target | 0.1 |
| Herbie | 0.2 |
if (* a x) < -8.997847041171635e-05Initial program 0.0
rmApplied flip3--0.1
Simplified0.0
Simplified0.0
rmApplied flip3-+0.0
Simplified0.0
Simplified0.0
if -8.997847041171635e-05 < (* a x) Initial program 44.1
Taylor expanded around 0 14.2
Simplified0.4
Final simplification0.2
herbie shell --seed 2019146
(FPCore (a x)
:name "expax (section 3.5)"
:herbie-expected 14
:herbie-target
(if (< (fabs (* a x)) 1/10) (* (* a x) (+ 1 (+ (/ (* a x) 2) (/ (pow (* a x) 2) 6)))) (- (exp (* a x)) 1))
(- (exp (* a x)) 1))