a \cdot \left(\left(b + c\right) + d\right)
a \cdot \left(b + c\right) + a \cdot d
double f(double a, double b, double c, double d) {
double r6711527 = a;
double r6711528 = b;
double r6711529 = c;
double r6711530 = r6711528 + r6711529;
double r6711531 = d;
double r6711532 = r6711530 + r6711531;
double r6711533 = r6711527 * r6711532;
return r6711533;
}
double f(double a, double b, double c, double d) {
double r6711534 = a;
double r6711535 = b;
double r6711536 = c;
double r6711537 = r6711535 + r6711536;
double r6711538 = r6711534 * r6711537;
double r6711539 = d;
double r6711540 = r6711534 * r6711539;
double r6711541 = r6711538 + r6711540;
return r6711541;
}




Bits error versus a




Bits error versus b




Bits error versus c




Bits error versus d
Results
| Original | 0.0 |
|---|---|
| Target | 0.0 |
| Herbie | 0.0 |
Initial program 0.0
rmApplied distribute-lft-in0.0
Final simplification0.0
herbie shell --seed 2019174 +o rules:numerics
(FPCore (a b c d)
:name "Expression, p14"
:pre (and (<= 56789.0 a 98765.0) (<= 0.0 b 1.0) (<= 0.0 c 0.0016773) (<= 0.0 d 0.0016773))
:herbie-target
(+ (* a b) (* a (+ c d)))
(* a (+ (+ b c) d)))