x \cdot \left(1 - y \cdot z\right)
\begin{array}{l}
\mathbf{if}\;y \cdot z \leq 3.986975430109517 \cdot 10^{+271}:\\
\;\;\;\;\left(1 - y \cdot z\right) \cdot x + x \cdot \mathsf{fma}\left(-z, y, y \cdot z\right)\\
\mathbf{else}:\\
\;\;\;\;-y \cdot \left(z \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) 3.986975430109517e+271) (+ (* (- 1.0 (* y z)) x) (* x (fma (- z) y (* y z)))) (- (* y (* z 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) <= 3.986975430109517e+271) {
tmp = ((1.0 - (y * z)) * x) + (x * fma(-z, y, (y * z)));
} else {
tmp = -(y * (z * x));
}
return tmp;
}



Bits error versus x



Bits error versus y



Bits error versus z
if (*.f64 y z) < 3.98697543010951704e271Initial program 1.8
Applied *-un-lft-identity_binary641.8
Applied prod-diff_binary641.8
Applied distribute-rgt-in_binary641.7
Taylor expanded in x around 0 1.7
if 3.98697543010951704e271 < (*.f64 y z) Initial program 45.5
Taylor expanded in y around inf 0.3
Simplified0.3
Final simplification1.7
herbie shell --seed 2021275
(FPCore (x y z)
:name "Data.Colour.RGBSpace.HSV:hsv from colour-2.3.3, I"
:precision binary64
(* x (- 1.0 (* y z))))