x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(\frac{2}{3} - z\right)\left(y - x\right) \cdot \left(6 \cdot \left(\left(\frac{\frac{2}{\sqrt{3}}}{\sqrt{3}} - z\right) + \mathsf{fma}\left(z, -1, z\right)\right)\right) + xdouble f(double x, double y, double z) {
double r263487 = x;
double r263488 = y;
double r263489 = r263488 - r263487;
double r263490 = 6.0;
double r263491 = r263489 * r263490;
double r263492 = 2.0;
double r263493 = 3.0;
double r263494 = r263492 / r263493;
double r263495 = z;
double r263496 = r263494 - r263495;
double r263497 = r263491 * r263496;
double r263498 = r263487 + r263497;
return r263498;
}
double f(double x, double y, double z) {
double r263499 = y;
double r263500 = x;
double r263501 = r263499 - r263500;
double r263502 = 6.0;
double r263503 = 2.0;
double r263504 = 3.0;
double r263505 = sqrt(r263504);
double r263506 = r263503 / r263505;
double r263507 = r263506 / r263505;
double r263508 = z;
double r263509 = r263507 - r263508;
double r263510 = -1.0;
double r263511 = fma(r263508, r263510, r263508);
double r263512 = r263509 + r263511;
double r263513 = r263502 * r263512;
double r263514 = r263501 * r263513;
double r263515 = r263514 + r263500;
return r263515;
}



Bits error versus x



Bits error versus y



Bits error versus z
Initial program 0.4
Simplified0.2
rmApplied fma-udef0.2
rmApplied add-cube-cbrt0.6
Applied add-sqr-sqrt0.6
Applied *-un-lft-identity0.6
Applied times-frac1.4
Applied prod-diff1.4
Simplified0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019326 +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))))