a \cdot \left(\left(b + c\right) + d\right)
a \cdot d + \left(c + b\right) \cdot a
double f(double a, double b, double c, double d) {
double r4352384 = a;
double r4352385 = b;
double r4352386 = c;
double r4352387 = r4352385 + r4352386;
double r4352388 = d;
double r4352389 = r4352387 + r4352388;
double r4352390 = r4352384 * r4352389;
return r4352390;
}
double f(double a, double b, double c, double d) {
double r4352391 = a;
double r4352392 = d;
double r4352393 = r4352391 * r4352392;
double r4352394 = c;
double r4352395 = b;
double r4352396 = r4352394 + r4352395;
double r4352397 = r4352396 * r4352391;
double r4352398 = r4352393 + r4352397;
return r4352398;
}




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-rgt-in0.0
Final simplification0.0
herbie shell --seed 2019172 +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)))