x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(\frac{2}{3} - z\right)\left(y - x\right) \cdot \left(\left(\frac{\frac{2}{\sqrt[3]{3}}}{\sqrt[3]{3} \cdot \sqrt[3]{3}} - z\right) \cdot 6 + \left(\left(-z\right) + z\right) \cdot 6\right) + xdouble f(double x, double y, double z) {
double r193171 = x;
double r193172 = y;
double r193173 = r193172 - r193171;
double r193174 = 6.0;
double r193175 = r193173 * r193174;
double r193176 = 2.0;
double r193177 = 3.0;
double r193178 = r193176 / r193177;
double r193179 = z;
double r193180 = r193178 - r193179;
double r193181 = r193175 * r193180;
double r193182 = r193171 + r193181;
return r193182;
}
double f(double x, double y, double z) {
double r193183 = y;
double r193184 = x;
double r193185 = r193183 - r193184;
double r193186 = 2.0;
double r193187 = 3.0;
double r193188 = cbrt(r193187);
double r193189 = r193186 / r193188;
double r193190 = r193188 * r193188;
double r193191 = r193189 / r193190;
double r193192 = z;
double r193193 = r193191 - r193192;
double r193194 = 6.0;
double r193195 = r193193 * r193194;
double r193196 = -r193192;
double r193197 = r193196 + r193192;
double r193198 = r193197 * r193194;
double r193199 = r193195 + r193198;
double r193200 = r193185 * r193199;
double r193201 = r193200 + r193184;
return r193201;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
Initial program 0.4
Simplified0.2
rmApplied fma-udef0.2
rmApplied add-cube-cbrt0.6
Applied add-cube-cbrt0.6
Applied *-un-lft-identity0.6
Applied times-frac0.6
Applied prod-diff0.6
Applied distribute-lft-in0.6
Simplified0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019326 +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))))