\left(a + \left(b + \left(c + d\right)\right)\right) \cdot 2
2 \cdot \left(\left(b + c\right) + \left(a + d\right)\right)
double f(double a, double b, double c, double d) {
double r4492499 = a;
double r4492500 = b;
double r4492501 = c;
double r4492502 = d;
double r4492503 = r4492501 + r4492502;
double r4492504 = r4492500 + r4492503;
double r4492505 = r4492499 + r4492504;
double r4492506 = 2.0;
double r4492507 = r4492505 * r4492506;
return r4492507;
}
double f(double a, double b, double c, double d) {
double r4492508 = 2.0;
double r4492509 = b;
double r4492510 = c;
double r4492511 = r4492509 + r4492510;
double r4492512 = a;
double r4492513 = d;
double r4492514 = r4492512 + r4492513;
double r4492515 = r4492511 + r4492514;
double r4492516 = r4492508 * r4492515;
return r4492516;
}




Bits error versus a




Bits error versus b




Bits error versus c




Bits error versus d
Results
| Original | 3.7 |
|---|---|
| Target | 3.8 |
| Herbie | 0 |
Initial program 3.7
rmApplied add-log-exp3.7
Applied add-log-exp3.7
Applied sum-log3.7
Applied add-log-exp3.7
Applied sum-log2.8
Applied add-log-exp2.8
Applied sum-log1.6
Simplified0.9
rmApplied exp-sum1.2
Applied log-prod0.0
Simplified0.0
Simplified0.0
rmApplied associate-+l+0
Final simplification0
herbie shell --seed 2019168
(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))