x \cdot \left(1 - \left(1 - y\right) \cdot z\right)
x \cdot \left(z \cdot \left(y - 1\right) + 1\right)
double f(double x, double y, double z) {
double r592926 = x;
double r592927 = 1.0;
double r592928 = y;
double r592929 = r592927 - r592928;
double r592930 = z;
double r592931 = r592929 * r592930;
double r592932 = r592927 - r592931;
double r592933 = r592926 * r592932;
return r592933;
}
double f(double x, double y, double z) {
double r592934 = x;
double r592935 = z;
double r592936 = y;
double r592937 = 1.0;
double r592938 = r592936 - r592937;
double r592939 = r592935 * r592938;
double r592940 = r592939 + r592937;
double r592941 = r592934 * r592940;
return r592941;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 3.4 |
|---|---|
| Target | 0.2 |
| Herbie | 3.4 |
Initial program 3.4
rmApplied sub-neg3.4
Applied distribute-lft-in3.4
Simplified1.7
Final simplification3.4
herbie shell --seed 2019297
(FPCore (x y z)
:name "Data.Colour.RGBSpace.HSV:hsv from colour-2.3.3, J"
:precision binary64
:herbie-target
(if (< (* x (- 1 (* (- 1 y) z))) -1.618195973607049e50) (+ x (* (- 1 y) (* (- z) x))) (if (< (* x (- 1 (* (- 1 y) z))) 3.8922376496639029e134) (- (* (* x y) z) (- (* x z) x)) (+ x (* (- 1 y) (* (- z) x)))))
(* x (- 1 (* (- 1 y) z))))