x \cdot y + z \cdot \left(1 - y\right)
z + y \cdot \left(x - z\right)
(FPCore (x y z) :precision binary64 (+ (* x y) (* z (- 1.0 y))))
(FPCore (x y z) :precision binary64 (+ z (* y (- x z))))
double code(double x, double y, double z) {
return (x * y) + (z * (1.0 - y));
}
double code(double x, double y, double z) {
return z + (y * (x - z));
}




















Bits error versus x




















Bits error versus y




















Bits error versus z
Results
| Original | 0.0 |
|---|---|
| Target | 0.0 |
| Herbie | 0.0 |
| Alternative 1 | |
|---|---|
| Error | 25.9 |
| Cost | 20672 |
| Alternative 2 | |
|---|---|
| Error | 40.5 |
| Cost | 13312 |
| Alternative 3 | |
|---|---|
| Error | 27.7 |
| Cost | 960 |
| Alternative 4 | |
|---|---|
| Error | 0.2 |
| Cost | 704 |
| Alternative 5 | |
|---|---|
| Error | 0.2 |
| Cost | 576 |
| Alternative 6 | |
|---|---|
| Error | 0.0 |
| Cost | 576 |
| Alternative 7 | |
|---|---|
| Error | 12.2 |
| Cost | 448 |
| Alternative 8 | |
|---|---|
| Error | 23.9 |
| Cost | 320 |
| Alternative 9 | |
|---|---|
| Error | 23.9 |
| Cost | 320 |
| Alternative 10 | |
|---|---|
| Error | 27.8 |
| Cost | 320 |
| Alternative 11 | |
|---|---|
| Error | 12.1 |
| Cost | 320 |
| Alternative 12 | |
|---|---|
| Error | 39.2 |
| Cost | 192 |
| Alternative 13 | |
|---|---|
| Error | 35.4 |
| Cost | 64 |
| Alternative 14 | |
|---|---|
| Error | 61.8 |
| Cost | 64 |
| Alternative 15 | |
|---|---|
| Error | 62.2 |
| Cost | 64 |
| Alternative 16 | |
|---|---|
| Error | 61.8 |
| Cost | 64 |

Initial program 0.0
Simplified0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2021042
(FPCore (x y z)
:name "Diagrams.TwoD.Segment:bezierClip from diagrams-lib-1.3.0.3"
:precision binary64
:herbie-target
(- z (* (- z x) y))
(+ (* x y) (* z (- 1.0 y))))