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}\right) \cdot \cos \left(\frac{2}{3} \cdot \pi\right) - \sin \left(\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right) \cdot \sin \left(\left(\frac{2}{3} \cdot \left(\sqrt[3]{\pi} \cdot \sqrt[3]{\pi}\right)\right) \cdot \sqrt[3]{\pi}\right)\right)double f(double g, double h) {
double r148171 = 2.0;
double r148172 = atan2(1.0, 0.0);
double r148173 = r148171 * r148172;
double r148174 = 3.0;
double r148175 = r148173 / r148174;
double r148176 = g;
double r148177 = -r148176;
double r148178 = h;
double r148179 = r148177 / r148178;
double r148180 = acos(r148179);
double r148181 = r148180 / r148174;
double r148182 = r148175 + r148181;
double r148183 = cos(r148182);
double r148184 = r148171 * r148183;
return r148184;
}
double f(double g, double h) {
double r148185 = 2.0;
double r148186 = g;
double r148187 = -r148186;
double r148188 = h;
double r148189 = r148187 / r148188;
double r148190 = acos(r148189);
double r148191 = 3.0;
double r148192 = r148190 / r148191;
double r148193 = cos(r148192);
double r148194 = r148185 / r148191;
double r148195 = atan2(1.0, 0.0);
double r148196 = r148194 * r148195;
double r148197 = cos(r148196);
double r148198 = r148193 * r148197;
double r148199 = sin(r148192);
double r148200 = cbrt(r148195);
double r148201 = r148200 * r148200;
double r148202 = r148194 * r148201;
double r148203 = r148202 * r148200;
double r148204 = sin(r148203);
double r148205 = r148199 * r148204;
double r148206 = r148198 - r148205;
double r148207 = r148185 * r148206;
return r148207;
}



Bits error versus g



Bits error versus h
Results
Initial program 1.0
Simplified1.0
rmApplied add-sqr-sqrt1.0
Applied *-un-lft-identity1.0
Applied times-frac1.0
rmApplied fma-udef1.0
Applied cos-sum1.0
Simplified0.0
Simplified1.0
rmApplied add-cube-cbrt0.0
Applied associate-*r*0.0
Final simplification0.0
herbie shell --seed 2020046 +o rules:numerics
(FPCore (g h)
:name "2-ancestry mixing, negative discriminant"
:precision binary64
(* 2 (cos (+ (/ (* 2 PI) 3) (/ (acos (/ (- g) h)) 3)))))