2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)2 \cdot \sqrt[3]{{\left(\sqrt[3]{{\left(\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right)\right)}^{2}} \cdot \sqrt[3]{\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right)}\right)}^{3}}double f(double g, double h) {
double r115252 = 2.0;
double r115253 = atan2(1.0, 0.0);
double r115254 = r115252 * r115253;
double r115255 = 3.0;
double r115256 = r115254 / r115255;
double r115257 = g;
double r115258 = -r115257;
double r115259 = h;
double r115260 = r115258 / r115259;
double r115261 = acos(r115260);
double r115262 = r115261 / r115255;
double r115263 = r115256 + r115262;
double r115264 = cos(r115263);
double r115265 = r115252 * r115264;
return r115265;
}
double f(double g, double h) {
double r115266 = 2.0;
double r115267 = 3.0;
double r115268 = r115266 / r115267;
double r115269 = atan2(1.0, 0.0);
double r115270 = g;
double r115271 = -r115270;
double r115272 = h;
double r115273 = r115271 / r115272;
double r115274 = acos(r115273);
double r115275 = r115274 / r115267;
double r115276 = fma(r115268, r115269, r115275);
double r115277 = cos(r115276);
double r115278 = 2.0;
double r115279 = pow(r115277, r115278);
double r115280 = cbrt(r115279);
double r115281 = cbrt(r115277);
double r115282 = r115280 * r115281;
double r115283 = 3.0;
double r115284 = pow(r115282, r115283);
double r115285 = cbrt(r115284);
double r115286 = r115266 * r115285;
return r115286;
}



Bits error versus g



Bits error versus h
Initial program 1.0
Simplified1.0
rmApplied add-cbrt-cube1.5
Simplified1.0
rmApplied add-cube-cbrt1.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019325 +o rules:numerics
(FPCore (g h)
:name "2-ancestry mixing, negative discriminant"
:precision binary64
(* 2 (cos (+ (/ (* 2 PI) 3) (/ (acos (/ (- g) h)) 3)))))