e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le \frac{-7138742798571315}{36893488147419103232}:\\
\;\;\;\;\left(\sqrt{e^{a \cdot x}} + \sqrt{1}\right) \cdot \left(\sqrt{e^{a \cdot x}} - \sqrt{1}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a \cdot x + \frac{{\left(a \cdot x\right)}^{2}}{2}\right) + \frac{{\left(a \cdot x\right)}^{3}}{6}\\
\end{array}double f(double a, double x) {
double r92090 = a;
double r92091 = x;
double r92092 = r92090 * r92091;
double r92093 = exp(r92092);
double r92094 = 1.0;
double r92095 = r92093 - r92094;
return r92095;
}
double f(double a, double x) {
double r92096 = a;
double r92097 = x;
double r92098 = r92096 * r92097;
double r92099 = -7138742798571315.0;
double r92100 = 3.6893488147419103e+19;
double r92101 = r92099 / r92100;
bool r92102 = r92098 <= r92101;
double r92103 = exp(r92098);
double r92104 = sqrt(r92103);
double r92105 = 1.0;
double r92106 = sqrt(r92105);
double r92107 = r92104 + r92106;
double r92108 = r92104 - r92106;
double r92109 = r92107 * r92108;
double r92110 = 2.0;
double r92111 = pow(r92098, r92110);
double r92112 = r92111 / r92110;
double r92113 = r92098 + r92112;
double r92114 = 3.0;
double r92115 = pow(r92098, r92114);
double r92116 = 6.0;
double r92117 = r92115 / r92116;
double r92118 = r92113 + r92117;
double r92119 = r92102 ? r92109 : r92118;
return r92119;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.3 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
if (* a x) < -0.00019349601127565674Initial program 0.0
rmApplied add-sqr-sqrt0.0
Applied add-sqr-sqrt0.1
Applied difference-of-squares0.1
if -0.00019349601127565674 < (* a x) Initial program 44.2
Taylor expanded around 0 13.8
Simplified13.8
rmApplied pow-prod-down4.2
rmApplied distribute-lft-in4.2
Simplified4.2
Simplified0.4
Final simplification0.3
herbie shell --seed 2019303
(FPCore (a x)
:name "expax (section 3.5)"
:precision binary64
:herbie-expected 14
:herbie-target
(if (< (fabs (* a x)) 0.10000000000000001) (* (* a x) (+ 1 (+ (/ (* a x) 2) (/ (pow (* a x) 2) 6)))) (- (exp (* a x)) 1))
(- (exp (* a x)) 1))