e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le -1.9961401647367767 \cdot 10^{-21}:\\
\;\;\;\;\frac{\sqrt[3]{\left(\left({\left(\sqrt{e^{a \cdot x}}\right)}^{3} + {\left(\sqrt{1}\right)}^{3}\right) \cdot \left(\sqrt{e^{a \cdot x}} - \sqrt{1}\right)\right) \cdot \left(e^{a \cdot x} \cdot e^{a \cdot x} - 1 \cdot 1\right)} \cdot \sqrt[3]{{\left(e^{a \cdot x}\right)}^{3} - {1}^{3}}}{\sqrt[3]{\left(\sqrt{e^{a \cdot x}} \cdot \sqrt{e^{a \cdot x}} + \left(\sqrt{1} \cdot \sqrt{1} - \sqrt{e^{a \cdot x}} \cdot \sqrt{1}\right)\right) \cdot \left(e^{a \cdot x} + 1\right)} \cdot \sqrt[3]{e^{a \cdot x} \cdot e^{a \cdot x} + \left(1 \cdot 1 + e^{a \cdot x} \cdot 1\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{2} \cdot \left({a}^{2} \cdot {x}^{2}\right) + \left(\frac{1}{6} \cdot \left({a}^{3} \cdot {x}^{3}\right) + a \cdot x\right)\\
\end{array}double f(double a, double x) {
double r128681 = a;
double r128682 = x;
double r128683 = r128681 * r128682;
double r128684 = exp(r128683);
double r128685 = 1.0;
double r128686 = r128684 - r128685;
return r128686;
}
double f(double a, double x) {
double r128687 = a;
double r128688 = x;
double r128689 = r128687 * r128688;
double r128690 = -1.9961401647367767e-21;
bool r128691 = r128689 <= r128690;
double r128692 = exp(r128689);
double r128693 = sqrt(r128692);
double r128694 = 3.0;
double r128695 = pow(r128693, r128694);
double r128696 = 1.0;
double r128697 = sqrt(r128696);
double r128698 = pow(r128697, r128694);
double r128699 = r128695 + r128698;
double r128700 = r128693 - r128697;
double r128701 = r128699 * r128700;
double r128702 = r128692 * r128692;
double r128703 = r128696 * r128696;
double r128704 = r128702 - r128703;
double r128705 = r128701 * r128704;
double r128706 = cbrt(r128705);
double r128707 = pow(r128692, r128694);
double r128708 = pow(r128696, r128694);
double r128709 = r128707 - r128708;
double r128710 = cbrt(r128709);
double r128711 = r128706 * r128710;
double r128712 = r128693 * r128693;
double r128713 = r128697 * r128697;
double r128714 = r128693 * r128697;
double r128715 = r128713 - r128714;
double r128716 = r128712 + r128715;
double r128717 = r128692 + r128696;
double r128718 = r128716 * r128717;
double r128719 = cbrt(r128718);
double r128720 = r128692 * r128696;
double r128721 = r128703 + r128720;
double r128722 = r128702 + r128721;
double r128723 = cbrt(r128722);
double r128724 = r128719 * r128723;
double r128725 = r128711 / r128724;
double r128726 = 0.5;
double r128727 = 2.0;
double r128728 = pow(r128687, r128727);
double r128729 = pow(r128688, r128727);
double r128730 = r128728 * r128729;
double r128731 = r128726 * r128730;
double r128732 = 0.16666666666666666;
double r128733 = pow(r128687, r128694);
double r128734 = pow(r128688, r128694);
double r128735 = r128733 * r128734;
double r128736 = r128732 * r128735;
double r128737 = r128736 + r128689;
double r128738 = r128731 + r128737;
double r128739 = r128691 ? r128725 : r128738;
return r128739;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.3 |
|---|---|
| Target | 0.2 |
| Herbie | 9.0 |
if (* a x) < -1.9961401647367767e-21Initial program 2.0
rmApplied add-cbrt-cube2.0
Simplified2.0
rmApplied add-cube-cbrt2.0
Simplified2.0
rmApplied add-sqr-sqrt2.0
Applied add-sqr-sqrt2.0
Applied difference-of-squares2.0
rmApplied flip3--2.0
Applied cbrt-div2.0
Applied flip--2.0
Applied flip3-+2.0
Applied associate-*l/2.0
Applied frac-times2.0
Applied cbrt-div2.0
Applied frac-times2.0
Applied cube-div2.0
Applied cbrt-div2.0
Simplified2.0
Simplified2.0
if -1.9961401647367767e-21 < (* a x) Initial program 44.5
rmApplied add-cbrt-cube44.6
Simplified44.6
rmApplied add-cube-cbrt44.6
Simplified44.6
Taylor expanded around 0 13.0
Final simplification9.0
herbie shell --seed 2020057
(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))