double f(double a, double x) {
double r7262297 = a;
double r7262298 = x;
double r7262299 = r7262297 * r7262298;
double r7262300 = exp(r7262299);
double r7262301 = 1.0;
double r7262302 = r7262300 - r7262301;
return r7262302;
}
double f(double a, double x) {
double r7262303 = a;
double r7262304 = x;
double r7262305 = r7262303 * r7262304;
double r7262306 = expm1(r7262305);
return r7262306;
}
e^{a \cdot x} - 1(e^{a \cdot x} - 1)^*



Bits error versus a




Bits error versus x
| Original | 29.9 |
|---|---|
| Target | 0.2 |
| Herbie | 0.0 |
Initial program 29.9
Simplified0.0
Final simplification0.0
herbie shell --seed 2019101 +o rules:numerics
(FPCore (a x)
:name "expax (section 3.5)"
: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))