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 r226643 = x;
double r226644 = y;
double r226645 = r226644 - r226643;
double r226646 = 6.0;
double r226647 = r226645 * r226646;
double r226648 = 2.0;
double r226649 = 3.0;
double r226650 = r226648 / r226649;
double r226651 = z;
double r226652 = r226650 - r226651;
double r226653 = r226647 * r226652;
double r226654 = r226643 + r226653;
return r226654;
}
double f(double x, double y, double z) {
double r226655 = y;
double r226656 = x;
double r226657 = r226655 - r226656;
double r226658 = 6.0;
double r226659 = 2.0;
double r226660 = 3.0;
double r226661 = r226659 / r226660;
double r226662 = z;
double r226663 = r226661 - r226662;
double r226664 = r226658 * r226663;
double r226665 = fma(r226657, r226664, r226656);
double r226666 = -r226662;
double r226667 = 1.0;
double r226668 = r226662 * r226667;
double r226669 = fma(r226666, r226667, r226668);
double r226670 = r226657 * r226658;
double r226671 = r226669 * r226670;
double r226672 = r226665 + r226671;
return r226672;
}



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.3
Final simplification0.3
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))))