\left(\left(x \cdot 3\right) \cdot x\right) \cdot y
\left(3 \cdot x\right) \cdot \left(x \cdot y\right)
(FPCore (x y) :precision binary64 (* (* (* x 3.0) x) y))
(FPCore (x y) :precision binary64 (* (* 3.0 x) (* x y)))
double code(double x, double y) {
return ((x * 3.0) * x) * y;
}
double code(double x, double y) {
return (3.0 * x) * (x * y);
}






Bits error versus x






Bits error versus y
Results
| Original | 10.3 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
| Alternative 1 | |
|---|---|
| Error | 41.3 |
| Cost | 64 |
| Alternative 2 | |
|---|---|
| Error | 61.8 |
| Cost | 64 |

Initial program 10.3
rmApplied associate-*l*_binary64_201380.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2021044
(FPCore (x y)
:name "Diagrams.Segment:$catParam from diagrams-lib-1.3.0.3, A"
:precision binary64
:herbie-target
(* (* x 3.0) (* x y))
(* (* (* x 3.0) x) y))