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 r3051158 = 2.0;
double r3051159 = atan2(1.0, 0.0);
double r3051160 = r3051158 * r3051159;
double r3051161 = 3.0;
double r3051162 = r3051160 / r3051161;
double r3051163 = g;
double r3051164 = -r3051163;
double r3051165 = h;
double r3051166 = r3051164 / r3051165;
double r3051167 = acos(r3051166);
double r3051168 = r3051167 / r3051161;
double r3051169 = r3051162 + r3051168;
double r3051170 = cos(r3051169);
double r3051171 = r3051158 * r3051170;
return r3051171;
}
double f(double g, double h) {
double r3051172 = 0.6666666666666666;
double r3051173 = atan2(1.0, 0.0);
double r3051174 = g;
double r3051175 = -r3051174;
double r3051176 = h;
double r3051177 = r3051175 / r3051176;
double r3051178 = acos(r3051177);
double r3051179 = 3.0;
double r3051180 = r3051178 / r3051179;
double r3051181 = fma(r3051172, r3051173, r3051180);
double r3051182 = cos(r3051181);
double r3051183 = exp(r3051182);
double r3051184 = cbrt(r3051183);
double r3051185 = r3051184 * r3051184;
double r3051186 = r3051185 * r3051184;
double r3051187 = log(r3051186);
double r3051188 = 2.0;
double r3051189 = r3051187 * r3051188;
return r3051189;
}



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)))))