2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)2 \cdot \left(\log \left(\sqrt[3]{e^{\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(-\frac{g}{h}\right)}{3}\right)\right)}} \cdot \sqrt[3]{e^{\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(-\frac{g}{h}\right)}{3}\right)\right)}}\right) + \log \left(\sqrt[3]{e^{\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \sqrt[3]{\frac{\cos^{-1} \left(-\frac{g}{h}\right)}{3}} \cdot \left(\sqrt[3]{\frac{\cos^{-1} \left(-\frac{g}{h}\right)}{3}} \cdot \sqrt[3]{\frac{\cos^{-1} \left(-\frac{g}{h}\right)}{3}}\right)\right)\right)}}\right)\right)double f(double g, double h) {
double r3903006 = 2.0;
double r3903007 = atan2(1.0, 0.0);
double r3903008 = r3903006 * r3903007;
double r3903009 = 3.0;
double r3903010 = r3903008 / r3903009;
double r3903011 = g;
double r3903012 = -r3903011;
double r3903013 = h;
double r3903014 = r3903012 / r3903013;
double r3903015 = acos(r3903014);
double r3903016 = r3903015 / r3903009;
double r3903017 = r3903010 + r3903016;
double r3903018 = cos(r3903017);
double r3903019 = r3903006 * r3903018;
return r3903019;
}
double f(double g, double h) {
double r3903020 = 2.0;
double r3903021 = 0.6666666666666666;
double r3903022 = atan2(1.0, 0.0);
double r3903023 = g;
double r3903024 = h;
double r3903025 = r3903023 / r3903024;
double r3903026 = -r3903025;
double r3903027 = acos(r3903026);
double r3903028 = 3.0;
double r3903029 = r3903027 / r3903028;
double r3903030 = fma(r3903021, r3903022, r3903029);
double r3903031 = cos(r3903030);
double r3903032 = exp(r3903031);
double r3903033 = cbrt(r3903032);
double r3903034 = r3903033 * r3903033;
double r3903035 = log(r3903034);
double r3903036 = cbrt(r3903029);
double r3903037 = r3903036 * r3903036;
double r3903038 = r3903036 * r3903037;
double r3903039 = fma(r3903021, r3903022, r3903038);
double r3903040 = cos(r3903039);
double r3903041 = exp(r3903040);
double r3903042 = cbrt(r3903041);
double r3903043 = log(r3903042);
double r3903044 = r3903035 + r3903043;
double r3903045 = r3903020 * r3903044;
return r3903045;
}



Bits error versus g



Bits error versus h
Initial program 1.0
Simplified1.0
rmApplied add-log-exp1.0
rmApplied add-cube-cbrt0.1
Applied log-prod0.1
rmApplied add-cube-cbrt0.1
Final simplification0.1
herbie shell --seed 2019168 +o rules:numerics
(FPCore (g h)
:name "2-ancestry mixing, negative discriminant"
(* 2 (cos (+ (/ (* 2 PI) 3) (/ (acos (/ (- g) h)) 3)))))