\left(\left(\left(e + d\right) + c\right) + b\right) + a
e + \left(\left(d + \left(b + c\right)\right) + a\right)
double f(double a, double b, double c, double d, double e) {
double r90575 = e;
double r90576 = d;
double r90577 = r90575 + r90576;
double r90578 = c;
double r90579 = r90577 + r90578;
double r90580 = b;
double r90581 = r90579 + r90580;
double r90582 = a;
double r90583 = r90581 + r90582;
return r90583;
}
double f(double a, double b, double c, double d, double e) {
double r90584 = e;
double r90585 = d;
double r90586 = b;
double r90587 = c;
double r90588 = r90586 + r90587;
double r90589 = r90585 + r90588;
double r90590 = a;
double r90591 = r90589 + r90590;
double r90592 = r90584 + r90591;
return r90592;
}




Bits error versus a




Bits error versus b




Bits error versus c




Bits error versus d




Bits error versus e
Results
| Original | 0.4 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 0.4
rmApplied associate-+l+0.4
rmApplied associate-+l+0.3
Simplified0.3
rmApplied associate-+l+0.3
Final simplification0.3
herbie shell --seed 2019354 +o rules:numerics
(FPCore (a b c d e)
:name "Expression 1, p15"
:precision binary64
:pre (<= 1 a 2 b 4 c 8 d 16 e 32)
:herbie-target
(+ (+ d (+ c (+ a b))) e)
(+ (+ (+ (+ e d) c) b) a))