a \cdot \left(\left(b + c\right) + d\right)
a \cdot \left(\left(b + c\right) + d\right)
double f(double a, double b, double c, double d) {
double r74029 = a;
double r74030 = b;
double r74031 = c;
double r74032 = r74030 + r74031;
double r74033 = d;
double r74034 = r74032 + r74033;
double r74035 = r74029 * r74034;
return r74035;
}
double f(double a, double b, double c, double d) {
double r74036 = a;
double r74037 = b;
double r74038 = c;
double r74039 = r74037 + r74038;
double r74040 = d;
double r74041 = r74039 + r74040;
double r74042 = r74036 * r74041;
return r74042;
}




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
Final simplification0.0
herbie shell --seed 2020003 +o rules:numerics
(FPCore (a b c d)
:name "Expression, p14"
:precision binary64
:pre (and (<= 56789 a 98765) (<= 0.0 b 1) (<= 0.0 c 0.0016773) (<= 0.0 d 0.0016773))
:herbie-target
(+ (* a b) (* a (+ c d)))
(* a (+ (+ b c) d)))