e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le -0.01289790256637027461572575504078486119397:\\
\;\;\;\;\frac{\frac{e^{9 \cdot \left(a \cdot x\right)} - \left(1 \cdot \left(1 \cdot 1\right)\right) \cdot \left(\left(1 \cdot \left(1 \cdot 1\right)\right) \cdot \left(1 \cdot \left(1 \cdot 1\right)\right)\right)}{e^{3 \cdot \left(a \cdot x\right)} \cdot e^{3 \cdot \left(a \cdot x\right)} + \left(\left(1 \cdot \left(1 \cdot 1\right)\right) \cdot \left(1 \cdot \left(1 \cdot 1\right)\right) + e^{3 \cdot \left(a \cdot x\right)} \cdot \left(1 \cdot \left(1 \cdot 1\right)\right)\right)}}{e^{a \cdot x} \cdot e^{a \cdot x} + \left(1 \cdot 1 + e^{a \cdot x} \cdot 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(\left(x \cdot a\right) \cdot \left(x \cdot a\right)\right) \cdot \frac{1}{2} + x \cdot \left(\left(\frac{1}{6} \cdot a\right) \cdot \left(\left(x \cdot a\right) \cdot \left(x \cdot a\right)\right) + a\right)\\
\end{array}double f(double a, double x) {
double r7746440 = a;
double r7746441 = x;
double r7746442 = r7746440 * r7746441;
double r7746443 = exp(r7746442);
double r7746444 = 1.0;
double r7746445 = r7746443 - r7746444;
return r7746445;
}
double f(double a, double x) {
double r7746446 = a;
double r7746447 = x;
double r7746448 = r7746446 * r7746447;
double r7746449 = -0.012897902566370275;
bool r7746450 = r7746448 <= r7746449;
double r7746451 = 9.0;
double r7746452 = r7746451 * r7746448;
double r7746453 = exp(r7746452);
double r7746454 = 1.0;
double r7746455 = r7746454 * r7746454;
double r7746456 = r7746454 * r7746455;
double r7746457 = r7746456 * r7746456;
double r7746458 = r7746456 * r7746457;
double r7746459 = r7746453 - r7746458;
double r7746460 = 3.0;
double r7746461 = r7746460 * r7746448;
double r7746462 = exp(r7746461);
double r7746463 = r7746462 * r7746462;
double r7746464 = r7746462 * r7746456;
double r7746465 = r7746457 + r7746464;
double r7746466 = r7746463 + r7746465;
double r7746467 = r7746459 / r7746466;
double r7746468 = exp(r7746448);
double r7746469 = r7746468 * r7746468;
double r7746470 = r7746468 * r7746454;
double r7746471 = r7746455 + r7746470;
double r7746472 = r7746469 + r7746471;
double r7746473 = r7746467 / r7746472;
double r7746474 = r7746447 * r7746446;
double r7746475 = r7746474 * r7746474;
double r7746476 = 0.5;
double r7746477 = r7746475 * r7746476;
double r7746478 = 0.16666666666666666;
double r7746479 = r7746478 * r7746446;
double r7746480 = r7746479 * r7746475;
double r7746481 = r7746480 + r7746446;
double r7746482 = r7746447 * r7746481;
double r7746483 = r7746477 + r7746482;
double r7746484 = r7746450 ? r7746473 : r7746483;
return r7746484;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.8 |
|---|---|
| Target | 0.1 |
| Herbie | 0.4 |
if (* a x) < -0.012897902566370275Initial program 0.0
rmApplied flip3--0.0
Simplified0.0
rmApplied flip3--0.0
Simplified0.0
if -0.012897902566370275 < (* a x) Initial program 44.7
Taylor expanded around 0 15.5
Simplified0.5
Final simplification0.4
herbie shell --seed 2019174
(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))