2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\log \left(\left(\sqrt[3]{e^{\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \left(\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right)\right)}} \cdot \sqrt[3]{e^{\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \left(\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right)\right)}}\right) \cdot \sqrt[3]{e^{\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \left(\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right)\right)}}\right) \cdot 2double f(double g, double h) {
double r9383067 = 2.0;
double r9383068 = atan2(1.0, 0.0);
double r9383069 = r9383067 * r9383068;
double r9383070 = 3.0;
double r9383071 = r9383069 / r9383070;
double r9383072 = g;
double r9383073 = -r9383072;
double r9383074 = h;
double r9383075 = r9383073 / r9383074;
double r9383076 = acos(r9383075);
double r9383077 = r9383076 / r9383070;
double r9383078 = r9383071 + r9383077;
double r9383079 = cos(r9383078);
double r9383080 = r9383067 * r9383079;
return r9383080;
}
double f(double g, double h) {
double r9383081 = 0.6666666666666666;
double r9383082 = atan2(1.0, 0.0);
double r9383083 = g;
double r9383084 = -r9383083;
double r9383085 = h;
double r9383086 = r9383084 / r9383085;
double r9383087 = acos(r9383086);
double r9383088 = 3.0;
double r9383089 = r9383087 / r9383088;
double r9383090 = fma(r9383081, r9383082, r9383089);
double r9383091 = cos(r9383090);
double r9383092 = exp(r9383091);
double r9383093 = cbrt(r9383092);
double r9383094 = r9383093 * r9383093;
double r9383095 = r9383094 * r9383093;
double r9383096 = log(r9383095);
double r9383097 = 2.0;
double r9383098 = r9383096 * r9383097;
return r9383098;
}



Bits error versus g



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