e^{a \cdot x} - 1\mathsf{expm1}\left(\left(a \cdot x\right)\right)double f(double a, double x) {
double r5002073 = a;
double r5002074 = x;
double r5002075 = r5002073 * r5002074;
double r5002076 = exp(r5002075);
double r5002077 = 1.0;
double r5002078 = r5002076 - r5002077;
return r5002078;
}
double f(double a, double x) {
double r5002079 = a;
double r5002080 = x;
double r5002081 = r5002079 * r5002080;
double r5002082 = expm1(r5002081);
return r5002082;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.8 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
Initial program 29.8
Simplified0.0
Final simplification0.0
herbie shell --seed 2019121 +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))