\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\cos th \cdot \left(\left|a1\right| \cdot \frac{\left|a1\right|}{\sqrt{2}}\right) + \cos th \cdot \frac{\frac{{a2}^{2}}{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}}}{\sqrt[3]{\sqrt{2}}}double f(double a1, double a2, double th) {
double r102042 = th;
double r102043 = cos(r102042);
double r102044 = 2.0;
double r102045 = sqrt(r102044);
double r102046 = r102043 / r102045;
double r102047 = a1;
double r102048 = r102047 * r102047;
double r102049 = r102046 * r102048;
double r102050 = a2;
double r102051 = r102050 * r102050;
double r102052 = r102046 * r102051;
double r102053 = r102049 + r102052;
return r102053;
}
double f(double a1, double a2, double th) {
double r102054 = th;
double r102055 = cos(r102054);
double r102056 = a1;
double r102057 = fabs(r102056);
double r102058 = 2.0;
double r102059 = sqrt(r102058);
double r102060 = r102057 / r102059;
double r102061 = r102057 * r102060;
double r102062 = r102055 * r102061;
double r102063 = a2;
double r102064 = 2.0;
double r102065 = pow(r102063, r102064);
double r102066 = cbrt(r102059);
double r102067 = r102066 * r102066;
double r102068 = r102065 / r102067;
double r102069 = r102068 / r102066;
double r102070 = r102055 * r102069;
double r102071 = r102062 + r102070;
return r102071;
}



Bits error versus a1



Bits error versus a2



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