\left(a + \left(b + \left(c + d\right)\right)\right) \cdot 2
2 \cdot \sqrt[3]{\left(\sqrt[3]{\left(\left(a + \left(\left(b + c\right) + d\right)\right) \cdot \left(a + \left(\left(b + c\right) + d\right)\right)\right) \cdot \left(a + \left(\left(b + c\right) + d\right)\right)} \cdot \left(d + \left(\left(b + c\right) + a\right)\right)\right) \cdot \left(a + \left(\left(b + c\right) + d\right)\right)}double f(double a, double b, double c, double d) {
double r1690256 = a;
double r1690257 = b;
double r1690258 = c;
double r1690259 = d;
double r1690260 = r1690258 + r1690259;
double r1690261 = r1690257 + r1690260;
double r1690262 = r1690256 + r1690261;
double r1690263 = 2.0;
double r1690264 = r1690262 * r1690263;
return r1690264;
}
double f(double a, double b, double c, double d) {
double r1690265 = 2.0;
double r1690266 = a;
double r1690267 = b;
double r1690268 = c;
double r1690269 = r1690267 + r1690268;
double r1690270 = d;
double r1690271 = r1690269 + r1690270;
double r1690272 = r1690266 + r1690271;
double r1690273 = r1690272 * r1690272;
double r1690274 = r1690273 * r1690272;
double r1690275 = cbrt(r1690274);
double r1690276 = r1690269 + r1690266;
double r1690277 = r1690270 + r1690276;
double r1690278 = r1690275 * r1690277;
double r1690279 = r1690278 * r1690272;
double r1690280 = cbrt(r1690279);
double r1690281 = r1690265 * r1690280;
return r1690281;
}




Bits error versus a




Bits error versus b




Bits error versus c




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