2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)2 \cdot \left(\sqrt[3]{\cos \left(\frac{2}{3} \cdot \pi\right) \cdot \cos \left(\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right) - \sin \left(\frac{2}{3} \cdot \pi\right) \cdot \sin \left(\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)} \cdot \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}}\right)double f(double g, double h) {
double r25023 = 2.0;
double r25024 = atan2(1.0, 0.0);
double r25025 = r25023 * r25024;
double r25026 = 3.0;
double r25027 = r25025 / r25026;
double r25028 = g;
double r25029 = -r25028;
double r25030 = h;
double r25031 = r25029 / r25030;
double r25032 = acos(r25031);
double r25033 = r25032 / r25026;
double r25034 = r25027 + r25033;
double r25035 = cos(r25034);
double r25036 = r25023 * r25035;
return r25036;
}
double f(double g, double h) {
double r25037 = 2.0;
double r25038 = 3.0;
double r25039 = r25037 / r25038;
double r25040 = atan2(1.0, 0.0);
double r25041 = r25039 * r25040;
double r25042 = cos(r25041);
double r25043 = g;
double r25044 = -r25043;
double r25045 = h;
double r25046 = r25044 / r25045;
double r25047 = acos(r25046);
double r25048 = r25047 / r25038;
double r25049 = cos(r25048);
double r25050 = r25042 * r25049;
double r25051 = sin(r25041);
double r25052 = sin(r25048);
double r25053 = r25051 * r25052;
double r25054 = r25050 - r25053;
double r25055 = cbrt(r25054);
double r25056 = fma(r25039, r25040, r25048);
double r25057 = cos(r25056);
double r25058 = 2.0;
double r25059 = pow(r25057, r25058);
double r25060 = cbrt(r25059);
double r25061 = r25055 * r25060;
double r25062 = r25037 * r25061;
return r25062;
}



Bits error versus g



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