x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(\frac{2}{3} - z\right)\mathsf{fma}\left(y - x, 6 \cdot \left(\frac{2}{3} - z\right), x\right) + \mathsf{fma}\left(-z, 1, z \cdot 1\right) \cdot \left(\left(y - x\right) \cdot 6\right)double f(double x, double y, double z) {
double r251395 = x;
double r251396 = y;
double r251397 = r251396 - r251395;
double r251398 = 6.0;
double r251399 = r251397 * r251398;
double r251400 = 2.0;
double r251401 = 3.0;
double r251402 = r251400 / r251401;
double r251403 = z;
double r251404 = r251402 - r251403;
double r251405 = r251399 * r251404;
double r251406 = r251395 + r251405;
return r251406;
}
double f(double x, double y, double z) {
double r251407 = y;
double r251408 = x;
double r251409 = r251407 - r251408;
double r251410 = 6.0;
double r251411 = 2.0;
double r251412 = 3.0;
double r251413 = r251411 / r251412;
double r251414 = z;
double r251415 = r251413 - r251414;
double r251416 = r251410 * r251415;
double r251417 = fma(r251409, r251416, r251408);
double r251418 = -r251414;
double r251419 = 1.0;
double r251420 = r251414 * r251419;
double r251421 = fma(r251418, r251419, r251420);
double r251422 = r251409 * r251410;
double r251423 = r251421 * r251422;
double r251424 = r251417 + r251423;
return r251424;
}



Bits error versus x



Bits error versus y



Bits error versus z
Initial program 0.4
rmApplied *-un-lft-identity0.4
Applied add-sqr-sqrt0.4
Applied prod-diff0.4
Applied distribute-rgt-in0.4
Applied associate-+r+0.4
Simplified0.2
Final simplification0.2
herbie shell --seed 2020025 +o rules:numerics
(FPCore (x y z)
:name "Data.Colour.RGBSpace.HSL:hsl from colour-2.3.3, D"
:precision binary64
(+ x (* (* (- y x) 6) (- (/ 2 3) z))))