\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\left(d1 \cdot d4 + \left(d1 \cdot d2 - d1 \cdot d3\right)\right) - d1 \cdot d1
(FPCore (d1 d2 d3 d4) :precision binary64 (- (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1)))
(FPCore (d1 d2 d3 d4) :precision binary64 (- (+ (* d1 d4) (- (* d1 d2) (* d1 d3))) (* d1 d1)))
double code(double d1, double d2, double d3, double d4) {
return (((d1 * d2) - (d1 * d3)) + (d4 * d1)) - (d1 * d1);
}
double code(double d1, double d2, double d3, double d4) {
return ((d1 * d4) + ((d1 * d2) - (d1 * d3))) - (d1 * d1);
}














Bits error versus d1














Bits error versus d2














Bits error versus d3














Bits error versus d4
Results
| Original | 0.0 |
|---|---|
| Target | 0.0 |
| Herbie | 0.0 |
| Alternative 1 | |
|---|---|
| Error | 0.0 |
| Cost | 704 |
| Alternative 2 | |
|---|---|
| Error | 0.0 |
| Cost | 576 |
| Alternative 3 | |
|---|---|
| Error | 4.5 |
| Cost | 1154 |
| Alternative 4 | |
|---|---|
| Error | 4.2 |
| Cost | 776 |
| Alternative 5 | |
|---|---|
| Error | 11.1 |
| Cost | 1041 |
| Alternative 6 | |
|---|---|
| Error | 32.5 |
| Cost | 2503 |
| Alternative 7 | |
|---|---|
| Error | 33.3 |
| Cost | 785 |
| Alternative 8 | |
|---|---|
| Error | 43.4 |
| Cost | 192 |
| Alternative 9 | |
|---|---|
| Error | 60.8 |
| Cost | 64 |
| Alternative 10 | |
|---|---|
| Error | 61.8 |
| Cost | 64 |

Initial program 0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2021044
(FPCore (d1 d2 d3 d4)
:name "FastMath dist4"
:precision binary64
:herbie-target
(* d1 (- (+ (- d2 d3) d4) d1))
(- (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1)))