a \cdot \left(\left(b + c\right) + d\right)
\left(\left(b + c\right) + d\right) \cdot a
double f(double a, double b, double c, double d) {
double r1253149 = a;
double r1253150 = b;
double r1253151 = c;
double r1253152 = r1253150 + r1253151;
double r1253153 = d;
double r1253154 = r1253152 + r1253153;
double r1253155 = r1253149 * r1253154;
return r1253155;
}
double f(double a, double b, double c, double d) {
double r1253156 = b;
double r1253157 = c;
double r1253158 = r1253156 + r1253157;
double r1253159 = d;
double r1253160 = r1253158 + r1253159;
double r1253161 = a;
double r1253162 = r1253160 * r1253161;
return r1253162;
}




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 2019155 +o rules:numerics
(FPCore (a b c d)
:name "Expression, p14"
:pre (and (<= 56789 a 98765) (<= 0 b 1) (<= 0 c 0.0016773) (<= 0 d 0.0016773))
:herbie-target
(+ (* a b) (* a (+ c d)))
(* a (+ (+ b c) d)))