2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right) \cdot 2double f(double g, double h) {
double r6631507 = 2.0;
double r6631508 = atan2(1.0, 0.0);
double r6631509 = r6631507 * r6631508;
double r6631510 = 3.0;
double r6631511 = r6631509 / r6631510;
double r6631512 = g;
double r6631513 = -r6631512;
double r6631514 = h;
double r6631515 = r6631513 / r6631514;
double r6631516 = acos(r6631515);
double r6631517 = r6631516 / r6631510;
double r6631518 = r6631511 + r6631517;
double r6631519 = cos(r6631518);
double r6631520 = r6631507 * r6631519;
return r6631520;
}
double f(double g, double h) {
double r6631521 = 0.6666666666666666;
double r6631522 = atan2(1.0, 0.0);
double r6631523 = g;
double r6631524 = -r6631523;
double r6631525 = h;
double r6631526 = r6631524 / r6631525;
double r6631527 = acos(r6631526);
double r6631528 = 3.0;
double r6631529 = r6631527 / r6631528;
double r6631530 = fma(r6631521, r6631522, r6631529);
double r6631531 = cos(r6631530);
double r6631532 = 2.0;
double r6631533 = r6631531 * r6631532;
return r6631533;
}



Bits error versus g



Bits error versus h
Initial program 1.0
Simplified1.0
Final simplification1.0
herbie shell --seed 2019158 +o rules:numerics
(FPCore (g h)
:name "2-ancestry mixing, negative discriminant"
(* 2 (cos (+ (/ (* 2 PI) 3) (/ (acos (/ (- g) h)) 3)))))