e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le -1.933321263417943109298030579523697269906 \cdot 10^{-4}:\\
\;\;\;\;\left(\sqrt{1} + \sqrt{e^{a \cdot x}}\right) \cdot \frac{\log \left(e^{e^{a \cdot x} \cdot \sqrt{e^{a \cdot x}} - 1 \cdot \sqrt{1}}\right)}{\left(\sqrt{e^{a \cdot x}} \cdot \sqrt{1} + 1\right) + e^{a \cdot x}}\\
\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{\left(a \cdot x\right) \cdot \left(a \cdot x\right)}{2}\right)\\
\end{array}double f(double a, double x) {
double r4937761 = a;
double r4937762 = x;
double r4937763 = r4937761 * r4937762;
double r4937764 = exp(r4937763);
double r4937765 = 1.0;
double r4937766 = r4937764 - r4937765;
return r4937766;
}
double f(double a, double x) {
double r4937767 = a;
double r4937768 = x;
double r4937769 = r4937767 * r4937768;
double r4937770 = -0.0001933321263417943;
bool r4937771 = r4937769 <= r4937770;
double r4937772 = 1.0;
double r4937773 = sqrt(r4937772);
double r4937774 = exp(r4937769);
double r4937775 = sqrt(r4937774);
double r4937776 = r4937773 + r4937775;
double r4937777 = r4937774 * r4937775;
double r4937778 = r4937772 * r4937773;
double r4937779 = r4937777 - r4937778;
double r4937780 = exp(r4937779);
double r4937781 = log(r4937780);
double r4937782 = r4937775 * r4937773;
double r4937783 = r4937782 + r4937772;
double r4937784 = r4937783 + r4937774;
double r4937785 = r4937781 / r4937784;
double r4937786 = r4937776 * r4937785;
double r4937787 = r4937769 * r4937769;
double r4937788 = r4937769 * r4937787;
double r4937789 = 0.16666666666666666;
double r4937790 = r4937788 * r4937789;
double r4937791 = 2.0;
double r4937792 = r4937787 / r4937791;
double r4937793 = r4937790 + r4937792;
double r4937794 = r4937769 + r4937793;
double r4937795 = r4937771 ? r4937786 : r4937794;
return r4937795;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.2 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
if (* a x) < -0.0001933321263417943Initial program 0.0
rmApplied add-sqr-sqrt0.0
Applied add-sqr-sqrt0.0
Applied difference-of-squares0.0
rmApplied flip3--0.0
Simplified0.0
Simplified0.0
rmApplied add-log-exp0.0
if -0.0001933321263417943 < (* a x) Initial program 44.6
Taylor expanded around 0 14.4
Simplified0.5
Final simplification0.3
herbie shell --seed 2019170
(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))