e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le -0.01289790256637027461572575504078486119397:\\
\;\;\;\;e^{a \cdot x} - 1\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\frac{1}{2} \cdot x\right) \cdot a\right) \cdot x\right) \cdot a + a \cdot x\\
\end{array}double f(double a, double x) {
double r94895 = a;
double r94896 = x;
double r94897 = r94895 * r94896;
double r94898 = exp(r94897);
double r94899 = 1.0;
double r94900 = r94898 - r94899;
return r94900;
}
double f(double a, double x) {
double r94901 = a;
double r94902 = x;
double r94903 = r94901 * r94902;
double r94904 = -0.012897902566370275;
bool r94905 = r94903 <= r94904;
double r94906 = exp(r94903);
double r94907 = 1.0;
double r94908 = r94906 - r94907;
double r94909 = 0.5;
double r94910 = r94909 * r94902;
double r94911 = r94910 * r94901;
double r94912 = r94911 * r94902;
double r94913 = r94912 * r94901;
double r94914 = r94913 + r94903;
double r94915 = r94905 ? r94908 : r94914;
return r94915;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.8 |
|---|---|
| Target | 0.1 |
| Herbie | 0.5 |
if (* a x) < -0.012897902566370275Initial program 0.0
if -0.012897902566370275 < (* a x) Initial program 44.7
Taylor expanded around 0 15.5
Simplified15.5
Taylor expanded around 0 8.6
Simplified8.6
rmApplied associate-*l*4.6
Simplified0.7
Final simplification0.5
herbie shell --seed 2019174
(FPCore (a x)
:name "expax (section 3.5)"
:herbie-expected 14
:herbie-target
(if (< (fabs (* a x)) 0.1) (* (* a x) (+ 1.0 (+ (/ (* a x) 2.0) (/ (pow (* a x) 2.0) 6.0)))) (- (exp (* a x)) 1.0))
(- (exp (* a x)) 1.0))