e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le -0.00024460776635084816:\\
\;\;\;\;\frac{\left(\sqrt{e^{a \cdot x}} + e^{a \cdot x}\right) \cdot e^{a \cdot x} - \left(1 + \sqrt{e^{a \cdot x}}\right)}{\left(1 + \sqrt{e^{a \cdot x}}\right) + \sqrt{e^{a \cdot x}} \cdot \sqrt{e^{a \cdot x}}}\\
\mathbf{else}:\\
\;\;\;\;\left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \left(\left(\left(\left(a \cdot x\right) \cdot \left(a \cdot x\right)\right) \cdot \left(a \cdot \frac{1}{48}\right)\right) \cdot x + \left(\left(\left(a \cdot x\right) \cdot \frac{1}{8}\right) \cdot \left(a \cdot x\right) + \left(a \cdot x\right) \cdot \frac{1}{2}\right)\right)\\
\end{array}double f(double a, double x) {
double r5982231 = a;
double r5982232 = x;
double r5982233 = r5982231 * r5982232;
double r5982234 = exp(r5982233);
double r5982235 = 1.0;
double r5982236 = r5982234 - r5982235;
return r5982236;
}
double f(double a, double x) {
double r5982237 = a;
double r5982238 = x;
double r5982239 = r5982237 * r5982238;
double r5982240 = -0.00024460776635084816;
bool r5982241 = r5982239 <= r5982240;
double r5982242 = exp(r5982239);
double r5982243 = sqrt(r5982242);
double r5982244 = r5982243 + r5982242;
double r5982245 = r5982244 * r5982242;
double r5982246 = 1.0;
double r5982247 = r5982246 + r5982243;
double r5982248 = r5982245 - r5982247;
double r5982249 = r5982243 * r5982243;
double r5982250 = r5982247 + r5982249;
double r5982251 = r5982248 / r5982250;
double r5982252 = r5982239 * r5982239;
double r5982253 = 0.020833333333333332;
double r5982254 = r5982237 * r5982253;
double r5982255 = r5982252 * r5982254;
double r5982256 = r5982255 * r5982238;
double r5982257 = 0.125;
double r5982258 = r5982239 * r5982257;
double r5982259 = r5982258 * r5982239;
double r5982260 = 0.5;
double r5982261 = r5982239 * r5982260;
double r5982262 = r5982259 + r5982261;
double r5982263 = r5982256 + r5982262;
double r5982264 = r5982247 * r5982263;
double r5982265 = r5982241 ? r5982251 : r5982264;
return r5982265;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.9 |
|---|---|
| Target | 0.1 |
| Herbie | 0.3 |
if (* a x) < -0.00024460776635084816Initial program 0.0
rmApplied *-un-lft-identity0.0
Applied add-sqr-sqrt0.0
Applied difference-of-squares0.0
rmApplied flip3--0.0
Applied associate-*r/0.0
Simplified0.0
if -0.00024460776635084816 < (* a x) Initial program 44.7
rmApplied *-un-lft-identity44.7
Applied add-sqr-sqrt44.7
Applied difference-of-squares44.7
Taylor expanded around 0 13.8
Simplified0.5
Final simplification0.3
herbie shell --seed 2019162
(FPCore (a x)
:name "expax (section 3.5)"
:herbie-expected 14
: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))