\left(a + \left(b + \left(c + d\right)\right)\right) \cdot 2.0
\sqrt[3]{\left(a + \left(\left(b + c\right) + d\right)\right) \cdot \left(\left(d + \left(\left(b + c\right) + a\right)\right) \cdot \left(d + \left(\left(b + c\right) + a\right)\right)\right)} \cdot 2.0double f(double a, double b, double c, double d) {
double r5479061 = a;
double r5479062 = b;
double r5479063 = c;
double r5479064 = d;
double r5479065 = r5479063 + r5479064;
double r5479066 = r5479062 + r5479065;
double r5479067 = r5479061 + r5479066;
double r5479068 = 2.0;
double r5479069 = r5479067 * r5479068;
return r5479069;
}
double f(double a, double b, double c, double d) {
double r5479070 = a;
double r5479071 = b;
double r5479072 = c;
double r5479073 = r5479071 + r5479072;
double r5479074 = d;
double r5479075 = r5479073 + r5479074;
double r5479076 = r5479070 + r5479075;
double r5479077 = r5479073 + r5479070;
double r5479078 = r5479074 + r5479077;
double r5479079 = r5479078 * r5479078;
double r5479080 = r5479076 * r5479079;
double r5479081 = cbrt(r5479080);
double r5479082 = 2.0;
double r5479083 = r5479081 * r5479082;
return r5479083;
}




Bits error versus a




Bits error versus b




Bits error versus c




Bits error versus d
Results
| Original | 3.7 |
|---|---|
| Target | 3.8 |
| Herbie | 2.7 |
Initial program 3.7
rmApplied associate-+r+2.8
rmApplied add-cbrt-cube2.9
rmApplied associate-+r+2.7
rmApplied associate-+r+2.7
Final simplification2.7
herbie shell --seed 2019165
(FPCore (a b c d)
:name "Expression, p6"
:pre (and (<= -14.0 a -13.0) (<= -3.0 b -2.0) (<= 3.0 c 3.5) (<= 12.5 d 13.5))
:herbie-target
(+ (* (+ a b) 2.0) (* (+ c d) 2.0))
(* (+ a (+ b (+ c d))) 2.0))