e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le -0.352186635536773:\\
\;\;\;\;\frac{e^{\left(a \cdot x\right) \cdot 3} - 1}{e^{a \cdot x} \cdot \left(e^{a \cdot x} + 1\right) + 1}\\
\mathbf{else}:\\
\;\;\;\;\left(a \cdot x + \frac{1}{2} \cdot \left(\left(a \cdot x\right) \cdot \left(a \cdot x\right)\right)\right) + \left(\frac{1}{6} \cdot x\right) \cdot \left(a \cdot \left(\left(a \cdot x\right) \cdot \left(a \cdot x\right)\right)\right)\\
\end{array}double f(double a, double x) {
double r1725786 = a;
double r1725787 = x;
double r1725788 = r1725786 * r1725787;
double r1725789 = exp(r1725788);
double r1725790 = 1.0;
double r1725791 = r1725789 - r1725790;
return r1725791;
}
double f(double a, double x) {
double r1725792 = a;
double r1725793 = x;
double r1725794 = r1725792 * r1725793;
double r1725795 = -0.352186635536773;
bool r1725796 = r1725794 <= r1725795;
double r1725797 = 3.0;
double r1725798 = r1725794 * r1725797;
double r1725799 = exp(r1725798);
double r1725800 = 1.0;
double r1725801 = r1725799 - r1725800;
double r1725802 = exp(r1725794);
double r1725803 = r1725802 + r1725800;
double r1725804 = r1725802 * r1725803;
double r1725805 = r1725804 + r1725800;
double r1725806 = r1725801 / r1725805;
double r1725807 = 0.5;
double r1725808 = r1725794 * r1725794;
double r1725809 = r1725807 * r1725808;
double r1725810 = r1725794 + r1725809;
double r1725811 = 0.16666666666666666;
double r1725812 = r1725811 * r1725793;
double r1725813 = r1725792 * r1725808;
double r1725814 = r1725812 * r1725813;
double r1725815 = r1725810 + r1725814;
double r1725816 = r1725796 ? r1725806 : r1725815;
return r1725816;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.6 |
|---|---|
| Target | 0.2 |
| Herbie | 0.4 |
if (* a x) < -0.352186635536773Initial program 0.0
rmApplied flip3--0.0
Simplified0.0
Simplified0.0
Taylor expanded around inf 0.0
if -0.352186635536773 < (* a x) Initial program 44.8
Taylor expanded around 0 14.3
Simplified0.6
Final simplification0.4
herbie shell --seed 2019152
(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))