x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(\frac{2}{3} - z\right)\mathsf{fma}\left(y - x, 6 \cdot \left(\left(1 \cdot {\left(\sqrt[3]{\frac{2}{3}}\right)}^{3} + \left(-z\right)\right) + \mathsf{fma}\left(-z, 1, z\right)\right), x\right)double f(double x, double y, double z) {
double r274697 = x;
double r274698 = y;
double r274699 = r274698 - r274697;
double r274700 = 6.0;
double r274701 = r274699 * r274700;
double r274702 = 2.0;
double r274703 = 3.0;
double r274704 = r274702 / r274703;
double r274705 = z;
double r274706 = r274704 - r274705;
double r274707 = r274701 * r274706;
double r274708 = r274697 + r274707;
return r274708;
}
double f(double x, double y, double z) {
double r274709 = y;
double r274710 = x;
double r274711 = r274709 - r274710;
double r274712 = 6.0;
double r274713 = 1.0;
double r274714 = 2.0;
double r274715 = 3.0;
double r274716 = r274714 / r274715;
double r274717 = cbrt(r274716);
double r274718 = 3.0;
double r274719 = pow(r274717, r274718);
double r274720 = r274713 * r274719;
double r274721 = z;
double r274722 = -r274721;
double r274723 = r274720 + r274722;
double r274724 = fma(r274722, r274713, r274721);
double r274725 = r274723 + r274724;
double r274726 = r274712 * r274725;
double r274727 = fma(r274711, r274726, r274710);
return r274727;
}



Bits error versus x



Bits error versus y



Bits error versus z
Initial program 0.4
Simplified0.2
rmApplied add-cube-cbrt0.6
Applied add-cube-cbrt1.4
Applied prod-diff1.4
Simplified0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020060 +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))))