e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le -0.07174886411196652880040147692852769978344:\\
\;\;\;\;\frac{\log \left(e^{e^{a \cdot \left(3 \cdot x\right)} - 1 \cdot \left(1 \cdot 1\right)}\right)}{\left(1 \cdot e^{a \cdot x} + 1 \cdot 1\right) + e^{a \cdot x} \cdot e^{a \cdot x}}\\
\mathbf{else}:\\
\;\;\;\;\left(a \cdot x + \left(\frac{1}{2} \cdot \left(a \cdot x\right)\right) \cdot \left(a \cdot x\right)\right) + \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)\\
\end{array}double f(double a, double x) {
double r4987269 = a;
double r4987270 = x;
double r4987271 = r4987269 * r4987270;
double r4987272 = exp(r4987271);
double r4987273 = 1.0;
double r4987274 = r4987272 - r4987273;
return r4987274;
}
double f(double a, double x) {
double r4987275 = a;
double r4987276 = x;
double r4987277 = r4987275 * r4987276;
double r4987278 = -0.07174886411196653;
bool r4987279 = r4987277 <= r4987278;
double r4987280 = 3.0;
double r4987281 = r4987280 * r4987276;
double r4987282 = r4987275 * r4987281;
double r4987283 = exp(r4987282);
double r4987284 = 1.0;
double r4987285 = r4987284 * r4987284;
double r4987286 = r4987284 * r4987285;
double r4987287 = r4987283 - r4987286;
double r4987288 = exp(r4987287);
double r4987289 = log(r4987288);
double r4987290 = exp(r4987277);
double r4987291 = r4987284 * r4987290;
double r4987292 = r4987291 + r4987285;
double r4987293 = r4987290 * r4987290;
double r4987294 = r4987292 + r4987293;
double r4987295 = r4987289 / r4987294;
double r4987296 = 0.5;
double r4987297 = r4987296 * r4987277;
double r4987298 = r4987297 * r4987277;
double r4987299 = r4987277 + r4987298;
double r4987300 = 0.16666666666666666;
double r4987301 = r4987277 * r4987277;
double r4987302 = r4987277 * r4987301;
double r4987303 = r4987300 * r4987302;
double r4987304 = r4987299 + r4987303;
double r4987305 = r4987279 ? r4987295 : r4987304;
return r4987305;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.3 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
if (* a x) < -0.07174886411196653Initial program 0.0
rmApplied flip3--0.0
Simplified0.0
rmApplied add-log-exp0.0
Applied add-log-exp0.0
Applied diff-log0.0
Simplified0.0
if -0.07174886411196653 < (* a x) Initial program 44.2
Taylor expanded around 0 13.8
Simplified0.5
Final simplification0.3
herbie shell --seed 2019172
(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))