e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le -0.00027541795016373276:\\
\;\;\;\;\frac{-1 + e^{\left(x + \left(x + x\right)\right) \cdot a}}{\left(\left(\left(\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}\right) \cdot \left(\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}\right)\right) \cdot \left(\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}\right) + e^{a \cdot x}\right) + 1}\\
\mathbf{else}:\\
\;\;\;\;a \cdot x + \left(\left(\left(a \cdot x\right) \cdot \left(\left(a \cdot x\right) \cdot \left(a \cdot x\right)\right)\right) \cdot \frac{1}{6} + \frac{1}{2} \cdot \left(\left(a \cdot x\right) \cdot \left(a \cdot x\right)\right)\right)\\
\end{array}double f(double a, double x) {
double r4982016 = a;
double r4982017 = x;
double r4982018 = r4982016 * r4982017;
double r4982019 = exp(r4982018);
double r4982020 = 1.0;
double r4982021 = r4982019 - r4982020;
return r4982021;
}
double f(double a, double x) {
double r4982022 = a;
double r4982023 = x;
double r4982024 = r4982022 * r4982023;
double r4982025 = -0.00027541795016373276;
bool r4982026 = r4982024 <= r4982025;
double r4982027 = -1.0;
double r4982028 = r4982023 + r4982023;
double r4982029 = r4982023 + r4982028;
double r4982030 = r4982029 * r4982022;
double r4982031 = exp(r4982030);
double r4982032 = r4982027 + r4982031;
double r4982033 = exp(r4982024);
double r4982034 = cbrt(r4982033);
double r4982035 = r4982034 * r4982034;
double r4982036 = r4982035 * r4982035;
double r4982037 = r4982036 * r4982035;
double r4982038 = r4982037 + r4982033;
double r4982039 = 1.0;
double r4982040 = r4982038 + r4982039;
double r4982041 = r4982032 / r4982040;
double r4982042 = r4982024 * r4982024;
double r4982043 = r4982024 * r4982042;
double r4982044 = 0.16666666666666666;
double r4982045 = r4982043 * r4982044;
double r4982046 = 0.5;
double r4982047 = r4982046 * r4982042;
double r4982048 = r4982045 + r4982047;
double r4982049 = r4982024 + r4982048;
double r4982050 = r4982026 ? r4982041 : r4982049;
return r4982050;
}




Bits error versus a




Bits error versus x
Results
| Original | 28.8 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
if (* a x) < -0.00027541795016373276Initial program 0.0
rmApplied flip3--0.0
Simplified0.0
Simplified0.0
rmApplied add-cube-cbrt0.0
Applied add-cube-cbrt0.0
Applied swap-sqr0.0
if -0.00027541795016373276 < (* a x) Initial program 43.8
Taylor expanded around 0 14.4
Simplified0.5
Final simplification0.3
herbie shell --seed 2019132
(FPCore (a x)
:name "expax (section 3.5)"
: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))