x \cdot \left(1 - y \cdot z\right)
\begin{array}{l}
\mathbf{if}\;y \cdot z \le 1.504828077239251210599676853555794383052 \cdot 10^{159}:\\
\;\;\;\;1 \cdot x + \left(-y \cdot z\right) \cdot x\\
\mathbf{else}:\\
\;\;\;\;1 \cdot x + y \cdot \left(z \cdot \left(-x\right)\right)\\
\end{array}double f(double x, double y, double z) {
double r185244 = x;
double r185245 = 1.0;
double r185246 = y;
double r185247 = z;
double r185248 = r185246 * r185247;
double r185249 = r185245 - r185248;
double r185250 = r185244 * r185249;
return r185250;
}
double f(double x, double y, double z) {
double r185251 = y;
double r185252 = z;
double r185253 = r185251 * r185252;
double r185254 = 1.5048280772392512e+159;
bool r185255 = r185253 <= r185254;
double r185256 = 1.0;
double r185257 = x;
double r185258 = r185256 * r185257;
double r185259 = -r185253;
double r185260 = r185259 * r185257;
double r185261 = r185258 + r185260;
double r185262 = -r185257;
double r185263 = r185252 * r185262;
double r185264 = r185251 * r185263;
double r185265 = r185258 + r185264;
double r185266 = r185255 ? r185261 : r185265;
return r185266;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if (* y z) < 1.5048280772392512e+159Initial program 1.9
rmApplied sub-neg1.9
Applied distribute-lft-in1.9
Simplified1.9
Simplified1.9
if 1.5048280772392512e+159 < (* y z) Initial program 22.7
rmApplied sub-neg22.7
Applied distribute-lft-in22.7
Simplified22.7
Simplified22.7
rmApplied distribute-rgt-neg-in22.7
Applied associate-*l*2.6
Simplified2.6
Final simplification2.0
herbie shell --seed 2019323 +o rules:numerics
(FPCore (x y z)
:name "Data.Colour.RGBSpace.HSV:hsv from colour-2.3.3, I"
:precision binary64
(* x (- 1 (* y z))))