2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\left(\cos \left(\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right) \cdot \cos \left(\frac{2}{3} \cdot \pi\right) - \sin \left(\sqrt{\pi} \cdot \left(\frac{2}{3} \cdot \sqrt{\pi}\right)\right) \cdot \sin \left(\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right) \cdot 2double f(double g, double h) {
double r6617227 = 2.0;
double r6617228 = atan2(1.0, 0.0);
double r6617229 = r6617227 * r6617228;
double r6617230 = 3.0;
double r6617231 = r6617229 / r6617230;
double r6617232 = g;
double r6617233 = -r6617232;
double r6617234 = h;
double r6617235 = r6617233 / r6617234;
double r6617236 = acos(r6617235);
double r6617237 = r6617236 / r6617230;
double r6617238 = r6617231 + r6617237;
double r6617239 = cos(r6617238);
double r6617240 = r6617227 * r6617239;
return r6617240;
}
double f(double g, double h) {
double r6617241 = g;
double r6617242 = -r6617241;
double r6617243 = h;
double r6617244 = r6617242 / r6617243;
double r6617245 = acos(r6617244);
double r6617246 = 3.0;
double r6617247 = r6617245 / r6617246;
double r6617248 = cos(r6617247);
double r6617249 = 2.0;
double r6617250 = r6617249 / r6617246;
double r6617251 = atan2(1.0, 0.0);
double r6617252 = r6617250 * r6617251;
double r6617253 = cos(r6617252);
double r6617254 = r6617248 * r6617253;
double r6617255 = sqrt(r6617251);
double r6617256 = r6617250 * r6617255;
double r6617257 = r6617255 * r6617256;
double r6617258 = sin(r6617257);
double r6617259 = sin(r6617247);
double r6617260 = r6617258 * r6617259;
double r6617261 = r6617254 - r6617260;
double r6617262 = r6617261 * r6617249;
return r6617262;
}



Bits error versus g



Bits error versus h
Results
Initial program 1.0
Simplified1.0
rmApplied fma-udef1.0
Applied cos-sum1.0
rmApplied add-sqr-sqrt0.0
Applied associate-*r*0.0
Final simplification0.0
herbie shell --seed 2019200 +o rules:numerics
(FPCore (g h)
:name "2-ancestry mixing, negative discriminant"
(* 2.0 (cos (+ (/ (* 2.0 PI) 3.0) (/ (acos (/ (- g) h)) 3.0)))))