e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le -5.305313852292152365229972038607186846093 \cdot 10^{-6}:\\
\;\;\;\;\frac{e^{\left(a \cdot x\right) \cdot 3} \cdot e^{\left(a \cdot x\right) \cdot 3} - {1}^{3} \cdot {1}^{3}}{\left(e^{a \cdot x} \cdot \left(e^{a \cdot x} + 1\right) + 1 \cdot 1\right) \cdot \left(e^{\left(a \cdot x\right) \cdot 3} + {1}^{3}\right)}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left({a}^{2} \cdot {x}^{2}\right) + \left(0.1666666666666665186369300499791279435158 \cdot \left({a}^{3} \cdot {x}^{3}\right) + 1 \cdot \left(a \cdot x\right)\right)\\
\end{array}double f(double a, double x) {
double r98790 = a;
double r98791 = x;
double r98792 = r98790 * r98791;
double r98793 = exp(r98792);
double r98794 = 1.0;
double r98795 = r98793 - r98794;
return r98795;
}
double f(double a, double x) {
double r98796 = a;
double r98797 = x;
double r98798 = r98796 * r98797;
double r98799 = -5.305313852292152e-06;
bool r98800 = r98798 <= r98799;
double r98801 = 3.0;
double r98802 = r98798 * r98801;
double r98803 = exp(r98802);
double r98804 = r98803 * r98803;
double r98805 = 1.0;
double r98806 = pow(r98805, r98801);
double r98807 = r98806 * r98806;
double r98808 = r98804 - r98807;
double r98809 = exp(r98798);
double r98810 = r98809 + r98805;
double r98811 = r98809 * r98810;
double r98812 = r98805 * r98805;
double r98813 = r98811 + r98812;
double r98814 = r98803 + r98806;
double r98815 = r98813 * r98814;
double r98816 = r98808 / r98815;
double r98817 = 0.5;
double r98818 = 2.0;
double r98819 = pow(r98796, r98818);
double r98820 = pow(r98797, r98818);
double r98821 = r98819 * r98820;
double r98822 = r98817 * r98821;
double r98823 = 0.16666666666666652;
double r98824 = pow(r98796, r98801);
double r98825 = pow(r98797, r98801);
double r98826 = r98824 * r98825;
double r98827 = r98823 * r98826;
double r98828 = r98805 * r98798;
double r98829 = r98827 + r98828;
double r98830 = r98822 + r98829;
double r98831 = r98800 ? r98816 : r98830;
return r98831;
}




Bits error versus a




Bits error versus x
Results
| Original | 28.7 |
|---|---|
| Target | 0.2 |
| Herbie | 9.7 |
if (* a x) < -5.305313852292152e-06Initial program 0.1
rmApplied flip3--0.1
Simplified0.1
rmApplied pow-exp0.1
rmApplied flip--0.1
Applied associate-/l/0.1
if -5.305313852292152e-06 < (* a x) Initial program 44.2
rmApplied flip3--44.2
Simplified44.2
Taylor expanded around 0 14.9
Final simplification9.7
herbie shell --seed 2019344
(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))