x + \left(\left(y - x\right) \cdot 6.0\right) \cdot \left(\frac{2.0}{3.0} - z\right)\mathsf{fma}\left(\sqrt[3]{x} \cdot \sqrt[3]{x}, \sqrt[3]{\sqrt[3]{x} \cdot \sqrt[3]{x}} \cdot \sqrt[3]{\sqrt[3]{x}}, \left(y - x\right) \cdot \left(\left(\frac{\frac{2.0}{\sqrt{3.0}}}{\sqrt{3.0}} - z\right) \cdot 6.0\right) + \mathsf{fma}\left(z, -1, z\right) \cdot \left(\left(y - x\right) \cdot 6.0\right)\right)double f(double x, double y, double z) {
double r12079082 = x;
double r12079083 = y;
double r12079084 = r12079083 - r12079082;
double r12079085 = 6.0;
double r12079086 = r12079084 * r12079085;
double r12079087 = 2.0;
double r12079088 = 3.0;
double r12079089 = r12079087 / r12079088;
double r12079090 = z;
double r12079091 = r12079089 - r12079090;
double r12079092 = r12079086 * r12079091;
double r12079093 = r12079082 + r12079092;
return r12079093;
}
double f(double x, double y, double z) {
double r12079094 = x;
double r12079095 = cbrt(r12079094);
double r12079096 = r12079095 * r12079095;
double r12079097 = cbrt(r12079096);
double r12079098 = cbrt(r12079095);
double r12079099 = r12079097 * r12079098;
double r12079100 = y;
double r12079101 = r12079100 - r12079094;
double r12079102 = 2.0;
double r12079103 = 3.0;
double r12079104 = sqrt(r12079103);
double r12079105 = r12079102 / r12079104;
double r12079106 = r12079105 / r12079104;
double r12079107 = z;
double r12079108 = r12079106 - r12079107;
double r12079109 = 6.0;
double r12079110 = r12079108 * r12079109;
double r12079111 = r12079101 * r12079110;
double r12079112 = -1.0;
double r12079113 = fma(r12079107, r12079112, r12079107);
double r12079114 = r12079101 * r12079109;
double r12079115 = r12079113 * r12079114;
double r12079116 = r12079111 + r12079115;
double r12079117 = fma(r12079096, r12079099, r12079116);
return r12079117;
}



Bits error versus x



Bits error versus y



Bits error versus z
Initial program 0.4
rmApplied add-cube-cbrt0.8
Applied add-sqr-sqrt1.1
Applied *-un-lft-identity1.1
Applied times-frac1.5
Applied prod-diff1.5
Applied distribute-lft-in1.5
Simplified0.3
Simplified0.3
rmApplied add-cube-cbrt0.4
Applied fma-def0.4
rmApplied add-cube-cbrt0.4
Applied cbrt-prod0.4
Final simplification0.4
herbie shell --seed 2019164 +o rules:numerics
(FPCore (x y z)
:name "Data.Colour.RGBSpace.HSL:hsl from colour-2.3.3, D"
(+ x (* (* (- y x) 6.0) (- (/ 2.0 3.0) z))))