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 r1880414 = 2.0;
double r1880415 = atan2(1.0, 0.0);
double r1880416 = r1880414 * r1880415;
double r1880417 = 3.0;
double r1880418 = r1880416 / r1880417;
double r1880419 = g;
double r1880420 = -r1880419;
double r1880421 = h;
double r1880422 = r1880420 / r1880421;
double r1880423 = acos(r1880422);
double r1880424 = r1880423 / r1880417;
double r1880425 = r1880418 + r1880424;
double r1880426 = cos(r1880425);
double r1880427 = r1880414 * r1880426;
return r1880427;
}
double f(double g, double h) {
double r1880428 = 2.0;
double r1880429 = 0.6666666666666666;
double r1880430 = atan2(1.0, 0.0);
double r1880431 = g;
double r1880432 = -r1880431;
double r1880433 = h;
double r1880434 = r1880432 / r1880433;
double r1880435 = acos(r1880434);
double r1880436 = 3.0;
double r1880437 = r1880435 / r1880436;
double r1880438 = fma(r1880429, r1880430, r1880437);
double r1880439 = cos(r1880438);
double r1880440 = cbrt(r1880439);
double r1880441 = r1880439 * r1880439;
double r1880442 = cbrt(r1880441);
double r1880443 = r1880440 * r1880442;
double r1880444 = r1880428 * r1880443;
return r1880444;
}



Bits error versus g



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