\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{\frac{\left(\cos th \cdot \sqrt{a1 \cdot a1 + a2 \cdot a2}\right) \cdot \sqrt{a1 \cdot a1 + a2 \cdot a2}}{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}}}{\sqrt[3]{\sqrt{2}}}double f(double a1, double a2, double th) {
double r92983 = th;
double r92984 = cos(r92983);
double r92985 = 2.0;
double r92986 = sqrt(r92985);
double r92987 = r92984 / r92986;
double r92988 = a1;
double r92989 = r92988 * r92988;
double r92990 = r92987 * r92989;
double r92991 = a2;
double r92992 = r92991 * r92991;
double r92993 = r92987 * r92992;
double r92994 = r92990 + r92993;
return r92994;
}
double f(double a1, double a2, double th) {
double r92995 = th;
double r92996 = cos(r92995);
double r92997 = a1;
double r92998 = r92997 * r92997;
double r92999 = a2;
double r93000 = r92999 * r92999;
double r93001 = r92998 + r93000;
double r93002 = sqrt(r93001);
double r93003 = r92996 * r93002;
double r93004 = r93003 * r93002;
double r93005 = 2.0;
double r93006 = sqrt(r93005);
double r93007 = cbrt(r93006);
double r93008 = r93007 * r93007;
double r93009 = r93004 / r93008;
double r93010 = r93009 / r93007;
return r93010;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Results
Initial program 0.5
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied associate-*l*0.5
Simplified0.5
rmApplied add-cube-cbrt0.5
Applied associate-/r*0.5
rmApplied add-sqr-sqrt0.5
Applied associate-*r*0.5
Final simplification0.5
herbie shell --seed 2019351
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
:precision binary64
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))