e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \le -256359444096060671088636065161355062149100:\\
\;\;\;\;\frac{e^{3 \cdot \left(x \cdot a\right)} - \left(1 \cdot 1\right) \cdot 1}{e^{x \cdot a} \cdot e^{x \cdot a} + \left(1 \cdot 1 + 1 \cdot \left(\sqrt[3]{e^{x \cdot a}} \cdot \left(\sqrt[3]{e^{x \cdot a}} \cdot \sqrt[3]{e^{x \cdot a}}\right)\right)\right)}\\
\mathbf{elif}\;a \le 4.908437356722725707183693128072816852345 \cdot 10^{208}:\\
\;\;\;\;\left(\left(\left(\left(x \cdot a\right) \cdot \left(x \cdot a\right)\right) \cdot \left(x \cdot a\right)\right) \cdot \frac{1}{6} + \left(x \cdot a\right) \cdot \left(\left(x \cdot a\right) \cdot \frac{1}{2}\right)\right) + x \cdot a\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{e^{3 \cdot \left(x \cdot a\right)} \cdot e^{3 \cdot \left(x \cdot a\right)} - \left(\left(1 \cdot 1\right) \cdot 1\right) \cdot \left(\left(1 \cdot 1\right) \cdot 1\right)}{e^{3 \cdot \left(x \cdot a\right)} + \left(1 \cdot 1\right) \cdot 1}}{\left(e^{x \cdot a} \cdot 1 + 1 \cdot 1\right) + e^{x \cdot a} \cdot e^{x \cdot a}}\\
\end{array}double f(double a, double x) {
double r5040552 = a;
double r5040553 = x;
double r5040554 = r5040552 * r5040553;
double r5040555 = exp(r5040554);
double r5040556 = 1.0;
double r5040557 = r5040555 - r5040556;
return r5040557;
}
double f(double a, double x) {
double r5040558 = a;
double r5040559 = -2.5635944409606067e+41;
bool r5040560 = r5040558 <= r5040559;
double r5040561 = 3.0;
double r5040562 = x;
double r5040563 = r5040562 * r5040558;
double r5040564 = r5040561 * r5040563;
double r5040565 = exp(r5040564);
double r5040566 = 1.0;
double r5040567 = r5040566 * r5040566;
double r5040568 = r5040567 * r5040566;
double r5040569 = r5040565 - r5040568;
double r5040570 = exp(r5040563);
double r5040571 = r5040570 * r5040570;
double r5040572 = cbrt(r5040570);
double r5040573 = r5040572 * r5040572;
double r5040574 = r5040572 * r5040573;
double r5040575 = r5040566 * r5040574;
double r5040576 = r5040567 + r5040575;
double r5040577 = r5040571 + r5040576;
double r5040578 = r5040569 / r5040577;
double r5040579 = 4.908437356722726e+208;
bool r5040580 = r5040558 <= r5040579;
double r5040581 = r5040563 * r5040563;
double r5040582 = r5040581 * r5040563;
double r5040583 = 0.16666666666666666;
double r5040584 = r5040582 * r5040583;
double r5040585 = 0.5;
double r5040586 = r5040563 * r5040585;
double r5040587 = r5040563 * r5040586;
double r5040588 = r5040584 + r5040587;
double r5040589 = r5040588 + r5040563;
double r5040590 = r5040565 * r5040565;
double r5040591 = r5040568 * r5040568;
double r5040592 = r5040590 - r5040591;
double r5040593 = r5040565 + r5040568;
double r5040594 = r5040592 / r5040593;
double r5040595 = r5040570 * r5040566;
double r5040596 = r5040595 + r5040567;
double r5040597 = r5040596 + r5040571;
double r5040598 = r5040594 / r5040597;
double r5040599 = r5040580 ? r5040589 : r5040598;
double r5040600 = r5040560 ? r5040578 : r5040599;
return r5040600;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.7 |
|---|---|
| Target | 0.2 |
| Herbie | 14.7 |
if a < -2.5635944409606067e+41Initial program 20.4
rmApplied flip3--20.4
Simplified20.3
rmApplied add-cube-cbrt20.3
if -2.5635944409606067e+41 < a < 4.908437356722726e+208Initial program 33.5
Taylor expanded around 0 23.0
Simplified13.9
if 4.908437356722726e+208 < a Initial program 7.2
rmApplied flip3--7.3
Simplified7.2
rmApplied flip--7.2
Final simplification14.7
herbie shell --seed 2019168
(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))