x \cdot \left(1 - y \cdot z\right)
\begin{array}{l}
\mathbf{if}\;z \le -4.67076187437381618 \cdot 10^{51} \lor \neg \left(z \le 1.12156159715755164 \cdot 10^{83}\right):\\
\;\;\;\;1 \cdot x + \left(-x \cdot y\right) \cdot z\\
\mathbf{else}:\\
\;\;\;\;1 \cdot x + \left(-x\right) \cdot \left(z \cdot y\right)\\
\end{array}double f(double x, double y, double z) {
double r285136 = x;
double r285137 = 1.0;
double r285138 = y;
double r285139 = z;
double r285140 = r285138 * r285139;
double r285141 = r285137 - r285140;
double r285142 = r285136 * r285141;
return r285142;
}
double f(double x, double y, double z) {
double r285143 = z;
double r285144 = -4.670761874373816e+51;
bool r285145 = r285143 <= r285144;
double r285146 = 1.1215615971575516e+83;
bool r285147 = r285143 <= r285146;
double r285148 = !r285147;
bool r285149 = r285145 || r285148;
double r285150 = 1.0;
double r285151 = x;
double r285152 = r285150 * r285151;
double r285153 = y;
double r285154 = r285151 * r285153;
double r285155 = -r285154;
double r285156 = r285155 * r285143;
double r285157 = r285152 + r285156;
double r285158 = -r285151;
double r285159 = r285143 * r285153;
double r285160 = r285158 * r285159;
double r285161 = r285152 + r285160;
double r285162 = r285149 ? r285157 : r285161;
return r285162;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if z < -4.670761874373816e+51 or 1.1215615971575516e+83 < z Initial program 9.9
rmApplied sub-neg9.9
Applied distribute-lft-in9.9
Simplified9.9
rmApplied distribute-lft-neg-in9.9
Applied associate-*r*4.7
Simplified4.7
if -4.670761874373816e+51 < z < 1.1215615971575516e+83Initial program 0.4
rmApplied sub-neg0.4
Applied distribute-lft-in0.3
Simplified0.3
rmApplied distribute-lft-neg-in0.3
Applied associate-*r*4.8
Simplified4.8
rmApplied distribute-lft-neg-in4.8
Applied associate-*l*0.3
Simplified0.3
Final simplification1.6
herbie shell --seed 2020047
(FPCore (x y z)
:name "Data.Colour.RGBSpace.HSV:hsv from colour-2.3.3, I"
:precision binary64
(* x (- 1 (* y z))))