x \cdot \left(1 - y \cdot z\right)
\begin{array}{l}
\mathbf{if}\;y \cdot z \le -6.17769750561453994 \cdot 10^{121} \lor \neg \left(y \cdot z \le 7.17200634455581739 \cdot 10^{212}\right):\\
\;\;\;\;x \cdot 1 + \left(\left(-x\right) \cdot y\right) \cdot z\\
\mathbf{else}:\\
\;\;\;\;x \cdot \left(1 - y \cdot z\right)\\
\end{array}double f(double x, double y, double z) {
double r290714 = x;
double r290715 = 1.0;
double r290716 = y;
double r290717 = z;
double r290718 = r290716 * r290717;
double r290719 = r290715 - r290718;
double r290720 = r290714 * r290719;
return r290720;
}
double f(double x, double y, double z) {
double r290721 = y;
double r290722 = z;
double r290723 = r290721 * r290722;
double r290724 = -6.17769750561454e+121;
bool r290725 = r290723 <= r290724;
double r290726 = 7.172006344555817e+212;
bool r290727 = r290723 <= r290726;
double r290728 = !r290727;
bool r290729 = r290725 || r290728;
double r290730 = x;
double r290731 = 1.0;
double r290732 = r290730 * r290731;
double r290733 = -r290730;
double r290734 = r290733 * r290721;
double r290735 = r290734 * r290722;
double r290736 = r290732 + r290735;
double r290737 = r290731 - r290723;
double r290738 = r290730 * r290737;
double r290739 = r290729 ? r290736 : r290738;
return r290739;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if (* y z) < -6.17769750561454e+121 or 7.172006344555817e+212 < (* y z) Initial program 18.6
rmApplied add-cube-cbrt19.5
Applied associate-*l*19.5
rmApplied sub-neg19.5
Applied distribute-lft-in19.5
Applied distribute-lft-in19.5
Simplified19.5
Simplified18.6
rmApplied associate-*r*2.7
if -6.17769750561454e+121 < (* y z) < 7.172006344555817e+212Initial program 0.1
Final simplification0.5
herbie shell --seed 2020056
(FPCore (x y z)
:name "Data.Colour.RGBSpace.HSV:hsv from colour-2.3.3, I"
:precision binary64
(* x (- 1 (* y z))))