x \cdot \left(1 - y \cdot z\right)
\begin{array}{l}
\mathbf{if}\;y \cdot z = -\infty \lor \neg \left(y \cdot z \le 2.669129644743586370097185904379114062632 \cdot 10^{138}\right):\\
\;\;\;\;x \cdot 1 + \left(x \cdot \left(-y\right)\right) \cdot z\\
\mathbf{else}:\\
\;\;\;\;x \cdot 1 + x \cdot \left(-y \cdot z\right)\\
\end{array}double f(double x, double y, double z) {
double r262764 = x;
double r262765 = 1.0;
double r262766 = y;
double r262767 = z;
double r262768 = r262766 * r262767;
double r262769 = r262765 - r262768;
double r262770 = r262764 * r262769;
return r262770;
}
double f(double x, double y, double z) {
double r262771 = y;
double r262772 = z;
double r262773 = r262771 * r262772;
double r262774 = -inf.0;
bool r262775 = r262773 <= r262774;
double r262776 = 2.6691296447435864e+138;
bool r262777 = r262773 <= r262776;
double r262778 = !r262777;
bool r262779 = r262775 || r262778;
double r262780 = x;
double r262781 = 1.0;
double r262782 = r262780 * r262781;
double r262783 = -r262771;
double r262784 = r262780 * r262783;
double r262785 = r262784 * r262772;
double r262786 = r262782 + r262785;
double r262787 = -r262773;
double r262788 = r262780 * r262787;
double r262789 = r262782 + r262788;
double r262790 = r262779 ? r262786 : r262789;
return r262790;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if (* y z) < -inf.0 or 2.6691296447435864e+138 < (* y z) Initial program 27.8
rmApplied sub-neg27.8
Applied distribute-lft-in27.8
rmApplied distribute-lft-neg-in27.8
Applied associate-*r*2.0
if -inf.0 < (* y z) < 2.6691296447435864e+138Initial program 0.1
rmApplied sub-neg0.1
Applied distribute-lft-in0.1
Final simplification0.3
herbie shell --seed 2020002
(FPCore (x y z)
:name "Data.Colour.RGBSpace.HSV:hsv from colour-2.3.3, I"
:precision binary64
(* x (- 1 (* y z))))