a \cdot \left(\left(b + c\right) + d\right)
\left(a \cdot b + c \cdot a\right) + a \cdot d
double f(double a, double b, double c, double d) {
double r99629 = a;
double r99630 = b;
double r99631 = c;
double r99632 = r99630 + r99631;
double r99633 = d;
double r99634 = r99632 + r99633;
double r99635 = r99629 * r99634;
return r99635;
}
double f(double a, double b, double c, double d) {
double r99636 = a;
double r99637 = b;
double r99638 = r99636 * r99637;
double r99639 = c;
double r99640 = r99639 * r99636;
double r99641 = r99638 + r99640;
double r99642 = d;
double r99643 = r99636 * r99642;
double r99644 = r99641 + r99643;
return r99644;
}




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
rmApplied distribute-lft-in0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019199 +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)))