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(4 - 6 \cdot z\right)\right)double f(double x, double y, double z) {
double r219476 = x;
double r219477 = y;
double r219478 = r219477 - r219476;
double r219479 = 6.0;
double r219480 = r219478 * r219479;
double r219481 = 2.0;
double r219482 = 3.0;
double r219483 = r219481 / r219482;
double r219484 = z;
double r219485 = r219483 - r219484;
double r219486 = r219480 * r219485;
double r219487 = r219476 + r219486;
return r219487;
}
double f(double x, double y, double z) {
double r219488 = x;
double r219489 = cbrt(r219488);
double r219490 = r219489 * r219489;
double r219491 = y;
double r219492 = r219491 - r219488;
double r219493 = 4.0;
double r219494 = 6.0;
double r219495 = z;
double r219496 = r219494 * r219495;
double r219497 = r219493 - r219496;
double r219498 = r219492 * r219497;
double r219499 = fma(r219490, r219489, r219498);
return r219499;
}



Bits error versus x



Bits error versus y



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