2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)2 \cdot \left(\sqrt[3]{\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right)} \cdot \sqrt[3]{\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right) \cdot \cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right)}\right)double f(double g, double h) {
double r5079309 = 2.0;
double r5079310 = atan2(1.0, 0.0);
double r5079311 = r5079309 * r5079310;
double r5079312 = 3.0;
double r5079313 = r5079311 / r5079312;
double r5079314 = g;
double r5079315 = -r5079314;
double r5079316 = h;
double r5079317 = r5079315 / r5079316;
double r5079318 = acos(r5079317);
double r5079319 = r5079318 / r5079312;
double r5079320 = r5079313 + r5079319;
double r5079321 = cos(r5079320);
double r5079322 = r5079309 * r5079321;
return r5079322;
}
double f(double g, double h) {
double r5079323 = 2.0;
double r5079324 = 0.6666666666666666;
double r5079325 = atan2(1.0, 0.0);
double r5079326 = g;
double r5079327 = -r5079326;
double r5079328 = h;
double r5079329 = r5079327 / r5079328;
double r5079330 = acos(r5079329);
double r5079331 = 3.0;
double r5079332 = r5079330 / r5079331;
double r5079333 = fma(r5079324, r5079325, r5079332);
double r5079334 = cos(r5079333);
double r5079335 = cbrt(r5079334);
double r5079336 = r5079334 * r5079334;
double r5079337 = cbrt(r5079336);
double r5079338 = r5079335 * r5079337;
double r5079339 = r5079323 * r5079338;
return r5079339;
}



Bits error versus g



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