e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le -11614523509.551191:\\
\;\;\;\;\left(\sqrt{e^{a \cdot x}} - 1\right) \cdot \left(1 + \sqrt{e^{a \cdot x}}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{6} \cdot \left(\left(a \cdot x\right) \cdot \left(\left(a \cdot x\right) \cdot \left(a \cdot x\right)\right)\right) + \left(\left(a \cdot \left(a \cdot x\right)\right) \cdot \frac{1}{2} + a\right) \cdot x\\
\end{array}double f(double a, double x) {
double r5643300 = a;
double r5643301 = x;
double r5643302 = r5643300 * r5643301;
double r5643303 = exp(r5643302);
double r5643304 = 1.0;
double r5643305 = r5643303 - r5643304;
return r5643305;
}
double f(double a, double x) {
double r5643306 = a;
double r5643307 = x;
double r5643308 = r5643306 * r5643307;
double r5643309 = -11614523509.551191;
bool r5643310 = r5643308 <= r5643309;
double r5643311 = exp(r5643308);
double r5643312 = sqrt(r5643311);
double r5643313 = 1.0;
double r5643314 = r5643312 - r5643313;
double r5643315 = r5643313 + r5643312;
double r5643316 = r5643314 * r5643315;
double r5643317 = 0.16666666666666666;
double r5643318 = r5643308 * r5643308;
double r5643319 = r5643308 * r5643318;
double r5643320 = r5643317 * r5643319;
double r5643321 = r5643306 * r5643308;
double r5643322 = 0.5;
double r5643323 = r5643321 * r5643322;
double r5643324 = r5643323 + r5643306;
double r5643325 = r5643324 * r5643307;
double r5643326 = r5643320 + r5643325;
double r5643327 = r5643310 ? r5643316 : r5643326;
return r5643327;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.2 |
|---|---|
| Target | 0.2 |
| Herbie | 1.1 |
if (* a x) < -11614523509.551191Initial program 0
rmApplied *-un-lft-identity0
Applied add-sqr-sqrt0
Applied difference-of-squares0
if -11614523509.551191 < (* a x) Initial program 43.0
Taylor expanded around 0 14.5
Simplified1.7
rmApplied *-un-lft-identity1.7
Applied distribute-rgt-out1.7
rmApplied *-commutative1.7
Applied associate-*l*1.7
Simplified1.7
Final simplification1.1
herbie shell --seed 2019158
(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))