\left(a + \left(b + \left(c + d\right)\right)\right) \cdot 2
2 \cdot \sqrt[3]{\left(d + \left(\left(b + c\right) + a\right)\right) \cdot \left(\sqrt[3]{\left(\left(\left(\left(b + c\right) + d\right) + a\right) \cdot \left(\left(\left(b + c\right) + d\right) + a\right)\right) \cdot \left(\left(\left(b + c\right) + d\right) + a\right)} \cdot \left(\left(\left(b + c\right) + d\right) + a\right)\right)}double f(double a, double b, double c, double d) {
double r1485448 = a;
double r1485449 = b;
double r1485450 = c;
double r1485451 = d;
double r1485452 = r1485450 + r1485451;
double r1485453 = r1485449 + r1485452;
double r1485454 = r1485448 + r1485453;
double r1485455 = 2.0;
double r1485456 = r1485454 * r1485455;
return r1485456;
}
double f(double a, double b, double c, double d) {
double r1485457 = 2.0;
double r1485458 = d;
double r1485459 = b;
double r1485460 = c;
double r1485461 = r1485459 + r1485460;
double r1485462 = a;
double r1485463 = r1485461 + r1485462;
double r1485464 = r1485458 + r1485463;
double r1485465 = r1485461 + r1485458;
double r1485466 = r1485465 + r1485462;
double r1485467 = r1485466 * r1485466;
double r1485468 = r1485467 * r1485466;
double r1485469 = cbrt(r1485468);
double r1485470 = r1485469 * r1485466;
double r1485471 = r1485464 * r1485470;
double r1485472 = cbrt(r1485471);
double r1485473 = r1485457 * r1485472;
return r1485473;
}




Bits error versus a




Bits error versus b




Bits error versus c




Bits error versus d
Results
| Original | 3.6 |
|---|---|
| Target | 3.8 |
| Herbie | 2.7 |
Initial program 3.6
rmApplied associate-+r+2.8
rmApplied add-cbrt-cube2.9
rmApplied associate-+r+2.7
rmApplied add-cbrt-cube2.7
Final simplification2.7
herbie shell --seed 2019153
(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))