\left(d1 \cdot 10 + d1 \cdot d2\right) + d1 \cdot 20
d1 \cdot \left(d2 + 30\right)
(FPCore (d1 d2) :precision binary64 (+ (+ (* d1 10.0) (* d1 d2)) (* d1 20.0)))
(FPCore (d1 d2) :precision binary64 (* d1 (+ d2 30.0)))
double code(double d1, double d2) {
return ((d1 * 10.0) + (d1 * d2)) + (d1 * 20.0);
}
double code(double d1, double d2) {
return d1 * (d2 + 30.0);
}





















Bits error versus d1





















Bits error versus d2
Results
| Original | 0.2 |
|---|---|
| Target | 0.0 |
| Herbie | 0.0 |
| Alternative 1 | |
|---|---|
| Error | 31.9 |
| Cost | 13504 |
| Alternative 2 | |
|---|---|
| Error | 39.2 |
| Cost | 13184 |
| Alternative 3 | |
|---|---|
| Error | 18.7 |
| Cost | 7424 |
| Alternative 4 | |
|---|---|
| Error | 21.4 |
| Cost | 1344 |
| Alternative 5 | |
|---|---|
| Error | 11.1 |
| Cost | 704 |
| Alternative 6 | |
|---|---|
| Error | 0.2 |
| Cost | 704 |
| Alternative 7 | |
|---|---|
| Error | 13.4 |
| Cost | 704 |
| Alternative 8 | |
|---|---|
| Error | 0.2 |
| Cost | 576 |
| Alternative 9 | |
|---|---|
| Error | 27.3 |
| Cost | 448 |
| Alternative 10 | |
|---|---|
| Error | 0.2 |
| Cost | 448 |
| Alternative 11 | |
|---|---|
| Error | 0.0 |
| Cost | 448 |
| Alternative 12 | |
|---|---|
| Error | 27.1 |
| Cost | 192 |
| Alternative 13 | |
|---|---|
| Error | 35.8 |
| Cost | 192 |
| Alternative 14 | |
|---|---|
| Error | 27.0 |
| Cost | 192 |
| Alternative 15 | |
|---|---|
| Error | 61.7 |
| Cost | 64 |
| Alternative 16 | |
|---|---|
| Error | 61.8 |
| Cost | 64 |
| Alternative 17 | |
|---|---|
| Error | 61.8 |
| Cost | 64 |

Initial program 0.2
Simplified0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2021022
(FPCore (d1 d2)
:name "FastMath test2"
:precision binary64
:herbie-target
(* d1 (+ 30.0 d2))
(+ (+ (* d1 10.0) (* d1 d2)) (* d1 20.0)))