x \cdot \left(1 - \left(1 - y\right) \cdot z\right)
\begin{array}{l}
\mathbf{if}\;z \le -6.238958166180944220920392289331491446517 \cdot 10^{60} \lor \neg \left(z \le 196914592157254175430467911680\right):\\
\;\;\;\;1 \cdot \left(x - x \cdot z\right) + \left(x \cdot y\right) \cdot z\\
\mathbf{else}:\\
\;\;\;\;x \cdot \left(z \cdot y + 1\right) + \left(-1 \cdot \left(x \cdot z\right)\right)\\
\end{array}double f(double x, double y, double z) {
double r667915 = x;
double r667916 = 1.0;
double r667917 = y;
double r667918 = r667916 - r667917;
double r667919 = z;
double r667920 = r667918 * r667919;
double r667921 = r667916 - r667920;
double r667922 = r667915 * r667921;
return r667922;
}
double f(double x, double y, double z) {
double r667923 = z;
double r667924 = -6.238958166180944e+60;
bool r667925 = r667923 <= r667924;
double r667926 = 1.9691459215725418e+29;
bool r667927 = r667923 <= r667926;
double r667928 = !r667927;
bool r667929 = r667925 || r667928;
double r667930 = 1.0;
double r667931 = x;
double r667932 = r667931 * r667923;
double r667933 = r667931 - r667932;
double r667934 = r667930 * r667933;
double r667935 = y;
double r667936 = r667931 * r667935;
double r667937 = r667936 * r667923;
double r667938 = r667934 + r667937;
double r667939 = r667923 * r667935;
double r667940 = r667939 + r667930;
double r667941 = r667931 * r667940;
double r667942 = r667930 * r667932;
double r667943 = -r667942;
double r667944 = r667941 + r667943;
double r667945 = r667929 ? r667938 : r667944;
return r667945;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 3.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if z < -6.238958166180944e+60 or 1.9691459215725418e+29 < z Initial program 10.5
Taylor expanded around inf 10.5
Simplified0.1
if -6.238958166180944e+60 < z < 1.9691459215725418e+29Initial program 0.2
Taylor expanded around inf 0.2
Simplified4.7
rmApplied sub-neg4.7
Applied distribute-rgt-in4.7
Applied associate-+l+4.7
Simplified2.3
rmApplied sub-neg2.3
Applied distribute-rgt-in2.3
Applied associate-+r+2.3
Simplified0.2
Final simplification0.2
herbie shell --seed 2019195
(FPCore (x y z)
:name "Data.Colour.RGBSpace.HSV:hsv from colour-2.3.3, J"
:herbie-target
(if (< (* x (- 1.0 (* (- 1.0 y) z))) -1.618195973607049e+50) (+ x (* (- 1.0 y) (* (- z) x))) (if (< (* x (- 1.0 (* (- 1.0 y) z))) 3.892237649663903e+134) (- (* (* x y) z) (- (* x z) x)) (+ x (* (- 1.0 y) (* (- z) x)))))
(* x (- 1.0 (* (- 1.0 y) z))))