x \cdot \left(1 - y \cdot z\right)
\begin{array}{l}
\mathbf{if}\;y \cdot z \le -6.190538439488532156885246023707942998935 \cdot 10^{277} \lor \neg \left(y \cdot z \le 1.535148570325797106530223815276498078201 \cdot 10^{308}\right):\\
\;\;\;\;x \cdot 1 + \left(x \cdot y\right) \cdot \left(-z\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot \left(1 - y \cdot z\right) + x \cdot \mathsf{fma}\left(-z, y, z \cdot y\right)\\
\end{array}double f(double x, double y, double z) {
double r246598 = x;
double r246599 = 1.0;
double r246600 = y;
double r246601 = z;
double r246602 = r246600 * r246601;
double r246603 = r246599 - r246602;
double r246604 = r246598 * r246603;
return r246604;
}
double f(double x, double y, double z) {
double r246605 = y;
double r246606 = z;
double r246607 = r246605 * r246606;
double r246608 = -6.190538439488532e+277;
bool r246609 = r246607 <= r246608;
double r246610 = 1.5351485703257971e+308;
bool r246611 = r246607 <= r246610;
double r246612 = !r246611;
bool r246613 = r246609 || r246612;
double r246614 = x;
double r246615 = 1.0;
double r246616 = r246614 * r246615;
double r246617 = r246614 * r246605;
double r246618 = -r246606;
double r246619 = r246617 * r246618;
double r246620 = r246616 + r246619;
double r246621 = r246615 - r246607;
double r246622 = r246614 * r246621;
double r246623 = r246606 * r246605;
double r246624 = fma(r246618, r246605, r246623);
double r246625 = r246614 * r246624;
double r246626 = r246622 + r246625;
double r246627 = r246613 ? r246620 : r246626;
return r246627;
}



Bits error versus x



Bits error versus y



Bits error versus z
if (* y z) < -6.190538439488532e+277 or 1.5351485703257971e+308 < (* y z) Initial program 55.8
rmApplied sub-neg55.8
Applied distribute-lft-in55.8
rmApplied distribute-rgt-neg-in55.8
Applied associate-*r*0.3
if -6.190538439488532e+277 < (* y z) < 1.5351485703257971e+308Initial program 0.1
rmApplied add-cube-cbrt0.1
Applied prod-diff0.1
Applied distribute-lft-in0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019353 +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))))