x \cdot \left(1 - y \cdot z\right)
\left(x \cdot 1 + x \cdot \left(-y \cdot z\right)\right) + x \cdot \mathsf{fma}\left(-z, y, z \cdot y\right)double f(double x, double y, double z) {
double r242350 = x;
double r242351 = 1.0;
double r242352 = y;
double r242353 = z;
double r242354 = r242352 * r242353;
double r242355 = r242351 - r242354;
double r242356 = r242350 * r242355;
return r242356;
}
double f(double x, double y, double z) {
double r242357 = x;
double r242358 = 1.0;
double r242359 = r242357 * r242358;
double r242360 = y;
double r242361 = z;
double r242362 = r242360 * r242361;
double r242363 = -r242362;
double r242364 = r242357 * r242363;
double r242365 = r242359 + r242364;
double r242366 = -r242361;
double r242367 = r242361 * r242360;
double r242368 = fma(r242366, r242360, r242367);
double r242369 = r242357 * r242368;
double r242370 = r242365 + r242369;
return r242370;
}



Bits error versus x



Bits error versus y



Bits error versus z
Initial program 3.2
rmApplied add-cube-cbrt3.2
Applied prod-diff3.2
Applied distribute-lft-in3.2
Simplified3.2
rmApplied sub-neg3.2
Applied distribute-lft-in3.2
Final simplification3.2
herbie shell --seed 2020033 +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))))