\left(d1 \cdot 3 + d1 \cdot d2\right) + d1 \cdot d3
d1 \cdot 3 + \left(d3 + d2\right) \cdot d1
double f(double d1, double d2, double d3) {
double r7358700 = d1;
double r7358701 = 3.0;
double r7358702 = r7358700 * r7358701;
double r7358703 = d2;
double r7358704 = r7358700 * r7358703;
double r7358705 = r7358702 + r7358704;
double r7358706 = d3;
double r7358707 = r7358700 * r7358706;
double r7358708 = r7358705 + r7358707;
return r7358708;
}
double f(double d1, double d2, double d3) {
double r7358709 = d1;
double r7358710 = 3.0;
double r7358711 = r7358709 * r7358710;
double r7358712 = d3;
double r7358713 = d2;
double r7358714 = r7358712 + r7358713;
double r7358715 = r7358714 * r7358709;
double r7358716 = r7358711 + r7358715;
return r7358716;
}




Bits error versus d1




Bits error versus d2




Bits error versus d3
Results
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.1
rmApplied associate-+l+0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019149
(FPCore (d1 d2 d3)
:name "FastMath test3"
:herbie-target
(* d1 (+ (+ 3 d2) d3))
(+ (+ (* d1 3) (* d1 d2)) (* d1 d3)))