2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)2 \cdot \left(\cos \left(\frac{\cos^{-1} \left(\frac{g}{h}\right)}{3} - \frac{\pi}{\frac{3}{2}}\right) \cdot \frac{1}{2} + \frac{\sqrt{3}}{2} \cdot \sin \left(\frac{\cos^{-1} \left(\frac{g}{h}\right)}{3} - \frac{\pi}{\frac{3}{2}}\right)\right)double f(double g, double h) {
double r5336236 = 2.0;
double r5336237 = atan2(1.0, 0.0);
double r5336238 = r5336236 * r5336237;
double r5336239 = 3.0;
double r5336240 = r5336238 / r5336239;
double r5336241 = g;
double r5336242 = -r5336241;
double r5336243 = h;
double r5336244 = r5336242 / r5336243;
double r5336245 = acos(r5336244);
double r5336246 = r5336245 / r5336239;
double r5336247 = r5336240 + r5336246;
double r5336248 = cos(r5336247);
double r5336249 = r5336236 * r5336248;
return r5336249;
}
double f(double g, double h) {
double r5336250 = 2.0;
double r5336251 = g;
double r5336252 = h;
double r5336253 = r5336251 / r5336252;
double r5336254 = acos(r5336253);
double r5336255 = 3.0;
double r5336256 = r5336254 / r5336255;
double r5336257 = atan2(1.0, 0.0);
double r5336258 = 1.5;
double r5336259 = r5336257 / r5336258;
double r5336260 = r5336256 - r5336259;
double r5336261 = cos(r5336260);
double r5336262 = 0.5;
double r5336263 = r5336261 * r5336262;
double r5336264 = sqrt(r5336255);
double r5336265 = r5336264 / r5336250;
double r5336266 = sin(r5336260);
double r5336267 = r5336265 * r5336266;
double r5336268 = r5336263 + r5336267;
double r5336269 = r5336250 * r5336268;
return r5336269;
}



Bits error versus g



Bits error versus h
Results
Initial program 1.0
Simplified1.0
rmApplied distribute-frac-neg1.0
Applied acos-neg1.0
Applied div-sub1.0
Applied associate-+l-1.0
Applied cos-diff0.1
Simplified0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019158
(FPCore (g h)
:name "2-ancestry mixing, negative discriminant"
(* 2 (cos (+ (/ (* 2 PI) 3) (/ (acos (/ (- g) h)) 3)))))