x \cdot \left(1 - y \cdot z\right)
\begin{array}{l}
\mathbf{if}\;y \cdot z \leq -\infty:\\
\;\;\;\;x + \sqrt{-z} \cdot \left(\left(y \cdot x\right) \cdot \sqrt{-z}\right)\\
\mathbf{elif}\;y \cdot z \leq 1.4453866497451607 \cdot 10^{+234}:\\
\;\;\;\;x - \left(y \cdot z\right) \cdot x\\
\mathbf{else}:\\
\;\;\;\;x - z \cdot \left(y \cdot x\right)\\
\end{array}(FPCore (x y z) :precision binary64 (* x (- 1.0 (* y z))))
(FPCore (x y z)
:precision binary64
(if (<= (* y z) (- INFINITY))
(+ x (* (sqrt (- z)) (* (* y x) (sqrt (- z)))))
(if (<= (* y z) 1.4453866497451607e+234)
(- x (* (* y z) x))
(- x (* z (* y x))))))double code(double x, double y, double z) {
return x * (1.0 - (y * z));
}
double code(double x, double y, double z) {
double tmp;
if ((y * z) <= -((double) INFINITY)) {
tmp = x + (sqrt(-z) * ((y * x) * sqrt(-z)));
} else if ((y * z) <= 1.4453866497451607e+234) {
tmp = x - ((y * z) * x);
} else {
tmp = x - (z * (y * x));
}
return tmp;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if (*.f64 y z) < -inf.0Initial program 64.0
rmApplied sub-neg_binary6464.0
Applied distribute-rgt-in_binary6464.0
Simplified64.0
Simplified64.0
rmApplied distribute-rgt-neg-in_binary6464.0
Applied associate-*r*_binary640.3
rmApplied add-sqr-sqrt_binary6430.8
Applied associate-*r*_binary6430.8
if -inf.0 < (*.f64 y z) < 1.4453866497451607e234Initial program 0.1
rmApplied sub-neg_binary640.1
Applied distribute-rgt-in_binary640.1
Simplified0.1
Simplified0.1
if 1.4453866497451607e234 < (*.f64 y z) Initial program 31.8
rmApplied sub-neg_binary6431.8
Applied distribute-rgt-in_binary6431.8
Simplified31.8
Simplified31.8
rmApplied distribute-rgt-neg-in_binary6431.8
Applied associate-*r*_binary640.5
Final simplification0.8
herbie shell --seed 2020260
(FPCore (x y z)
:name "Data.Colour.RGBSpace.HSV:hsv from colour-2.3.3, I"
:precision binary64
(* x (- 1.0 (* y z))))