e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le -0.00024460776635084816:\\
\;\;\;\;\frac{\left(\sqrt{e^{a \cdot x}} + e^{a \cdot x}\right) \cdot e^{a \cdot x} - \left(1 + \sqrt{e^{a \cdot x}}\right)}{\left(1 + \sqrt{e^{a \cdot x}}\right) + \sqrt{e^{a \cdot x}} \cdot \sqrt{e^{a \cdot x}}}\\
\mathbf{else}:\\
\;\;\;\;\left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \left(\left(\left(\left(a \cdot x\right) \cdot \left(a \cdot x\right)\right) \cdot \left(a \cdot \frac{1}{48}\right)\right) \cdot x + \left(\left(\left(a \cdot x\right) \cdot \frac{1}{8}\right) \cdot \left(a \cdot x\right) + \left(a \cdot x\right) \cdot \frac{1}{2}\right)\right)\\
\end{array}double f(double a, double x) {
double r4930695 = a;
double r4930696 = x;
double r4930697 = r4930695 * r4930696;
double r4930698 = exp(r4930697);
double r4930699 = 1.0;
double r4930700 = r4930698 - r4930699;
return r4930700;
}
double f(double a, double x) {
double r4930701 = a;
double r4930702 = x;
double r4930703 = r4930701 * r4930702;
double r4930704 = -0.00024460776635084816;
bool r4930705 = r4930703 <= r4930704;
double r4930706 = exp(r4930703);
double r4930707 = sqrt(r4930706);
double r4930708 = r4930707 + r4930706;
double r4930709 = r4930708 * r4930706;
double r4930710 = 1.0;
double r4930711 = r4930710 + r4930707;
double r4930712 = r4930709 - r4930711;
double r4930713 = r4930707 * r4930707;
double r4930714 = r4930711 + r4930713;
double r4930715 = r4930712 / r4930714;
double r4930716 = r4930703 * r4930703;
double r4930717 = 0.020833333333333332;
double r4930718 = r4930701 * r4930717;
double r4930719 = r4930716 * r4930718;
double r4930720 = r4930719 * r4930702;
double r4930721 = 0.125;
double r4930722 = r4930703 * r4930721;
double r4930723 = r4930722 * r4930703;
double r4930724 = 0.5;
double r4930725 = r4930703 * r4930724;
double r4930726 = r4930723 + r4930725;
double r4930727 = r4930720 + r4930726;
double r4930728 = r4930711 * r4930727;
double r4930729 = r4930705 ? r4930715 : r4930728;
return r4930729;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.9 |
|---|---|
| Target | 0.1 |
| Herbie | 0.3 |
if (* a x) < -0.00024460776635084816Initial program 0.0
rmApplied *-un-lft-identity0.0
Applied add-sqr-sqrt0.0
Applied difference-of-squares0.0
rmApplied flip3--0.0
Applied associate-*r/0.0
Simplified0.0
if -0.00024460776635084816 < (* a x) Initial program 44.7
rmApplied *-un-lft-identity44.7
Applied add-sqr-sqrt44.7
Applied difference-of-squares44.7
Taylor expanded around 0 13.8
Simplified0.5
Final simplification0.3
herbie shell --seed 2019162
(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))