x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(\frac{2}{3} - z\right)4 \cdot y - \mathsf{fma}\left(x, 3, \left(z \cdot \left(y - x\right)\right) \cdot 6\right)double f(double x, double y, double z) {
double r305691 = x;
double r305692 = y;
double r305693 = r305692 - r305691;
double r305694 = 6.0;
double r305695 = r305693 * r305694;
double r305696 = 2.0;
double r305697 = 3.0;
double r305698 = r305696 / r305697;
double r305699 = z;
double r305700 = r305698 - r305699;
double r305701 = r305695 * r305700;
double r305702 = r305691 + r305701;
return r305702;
}
double f(double x, double y, double z) {
double r305703 = 4.0;
double r305704 = y;
double r305705 = r305703 * r305704;
double r305706 = x;
double r305707 = 3.0;
double r305708 = z;
double r305709 = r305704 - r305706;
double r305710 = r305708 * r305709;
double r305711 = 6.0;
double r305712 = r305710 * r305711;
double r305713 = fma(r305706, r305707, r305712);
double r305714 = r305705 - r305713;
return r305714;
}



Bits error versus x



Bits error versus y



Bits error versus z
Initial program 0.4
rmApplied sub-neg0.4
Applied distribute-rgt-in0.4
Applied associate-+r+0.4
Simplified0.4
Taylor expanded around 0 0.2
rmApplied associate-+l-0.2
Simplified0.2
rmApplied associate-*r*0.1
Final simplification0.1
herbie shell --seed 2019354 +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))))