\left(a + \left(b + \left(c + d\right)\right)\right) \cdot 2
\sqrt[3]{\left(\left(a + \left(d + \left(c + b\right)\right)\right) \cdot \log \left(e^{c + \left(\left(a + b\right) + d\right)}\right)\right) \cdot \left(\left(\left(c + b\right) + a\right) + d\right)} \cdot 2double f(double a, double b, double c, double d) {
double r10633092 = a;
double r10633093 = b;
double r10633094 = c;
double r10633095 = d;
double r10633096 = r10633094 + r10633095;
double r10633097 = r10633093 + r10633096;
double r10633098 = r10633092 + r10633097;
double r10633099 = 2.0;
double r10633100 = r10633098 * r10633099;
return r10633100;
}
double f(double a, double b, double c, double d) {
double r10633101 = a;
double r10633102 = d;
double r10633103 = c;
double r10633104 = b;
double r10633105 = r10633103 + r10633104;
double r10633106 = r10633102 + r10633105;
double r10633107 = r10633101 + r10633106;
double r10633108 = r10633101 + r10633104;
double r10633109 = r10633108 + r10633102;
double r10633110 = r10633103 + r10633109;
double r10633111 = exp(r10633110);
double r10633112 = log(r10633111);
double r10633113 = r10633107 * r10633112;
double r10633114 = r10633105 + r10633101;
double r10633115 = r10633114 + r10633102;
double r10633116 = r10633113 * r10633115;
double r10633117 = cbrt(r10633116);
double r10633118 = 2.0;
double r10633119 = r10633117 * r10633118;
return r10633119;
}




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.7
rmApplied add-log-exp2.7
Applied add-log-exp2.7
Applied add-log-exp2.7
Applied sum-log2.7
Applied sum-log2.6
Applied add-log-exp2.6
Applied sum-log2.3
Simplified2.7
Final simplification2.7
herbie shell --seed 2019119 +o rules:numerics
(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))