x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(\frac{2}{3} - z\right)\mathsf{fma}\left(\sqrt[3]{x} \cdot \sqrt[3]{x}, \sqrt[3]{x}, \left(y - x\right) \cdot \left(\left(\frac{2}{3} - z\right) \cdot 6\right)\right)double f(double x, double y, double z) {
double r307492 = x;
double r307493 = y;
double r307494 = r307493 - r307492;
double r307495 = 6.0;
double r307496 = r307494 * r307495;
double r307497 = 2.0;
double r307498 = 3.0;
double r307499 = r307497 / r307498;
double r307500 = z;
double r307501 = r307499 - r307500;
double r307502 = r307496 * r307501;
double r307503 = r307492 + r307502;
return r307503;
}
double f(double x, double y, double z) {
double r307504 = x;
double r307505 = cbrt(r307504);
double r307506 = r307505 * r307505;
double r307507 = y;
double r307508 = r307507 - r307504;
double r307509 = 2.0;
double r307510 = 3.0;
double r307511 = r307509 / r307510;
double r307512 = z;
double r307513 = r307511 - r307512;
double r307514 = 6.0;
double r307515 = r307513 * r307514;
double r307516 = r307508 * r307515;
double r307517 = fma(r307506, r307505, r307516);
return r307517;
}



Bits error versus x



Bits error versus y



Bits error versus z
Initial program 0.4
rmApplied associate-*l*0.2
Simplified0.2
rmApplied add-cube-cbrt0.3
Applied fma-def0.3
Final simplification0.3
herbie shell --seed 2020043 +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))))