2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)2 \cdot \sqrt[3]{{\left(\sqrt[3]{{\left(\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right)\right)}^{2}} \cdot \sqrt[3]{\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right)}\right)}^{3}}double f(double g, double h) {
double r83251 = 2.0;
double r83252 = atan2(1.0, 0.0);
double r83253 = r83251 * r83252;
double r83254 = 3.0;
double r83255 = r83253 / r83254;
double r83256 = g;
double r83257 = -r83256;
double r83258 = h;
double r83259 = r83257 / r83258;
double r83260 = acos(r83259);
double r83261 = r83260 / r83254;
double r83262 = r83255 + r83261;
double r83263 = cos(r83262);
double r83264 = r83251 * r83263;
return r83264;
}
double f(double g, double h) {
double r83265 = 2.0;
double r83266 = 3.0;
double r83267 = r83265 / r83266;
double r83268 = atan2(1.0, 0.0);
double r83269 = g;
double r83270 = -r83269;
double r83271 = h;
double r83272 = r83270 / r83271;
double r83273 = acos(r83272);
double r83274 = r83273 / r83266;
double r83275 = fma(r83267, r83268, r83274);
double r83276 = cos(r83275);
double r83277 = 2.0;
double r83278 = pow(r83276, r83277);
double r83279 = cbrt(r83278);
double r83280 = cbrt(r83276);
double r83281 = r83279 * r83280;
double r83282 = 3.0;
double r83283 = pow(r83281, r83282);
double r83284 = cbrt(r83283);
double r83285 = r83265 * r83284;
return r83285;
}



Bits error versus g



Bits error versus h
Initial program 1.0
Simplified1.0
rmApplied add-cbrt-cube1.5
Simplified1.0
rmApplied add-cube-cbrt1.0
Simplified0.1
Final simplification0.1
herbie shell --seed 2019306 +o rules:numerics
(FPCore (g h)
:name "2-ancestry mixing, negative discriminant"
:precision binary64
(* 2 (cos (+ (/ (* 2 PI) 3) (/ (acos (/ (- g) h)) 3)))))