\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 \frac{\sqrt{{a1}^{2}}}{\frac{\sqrt{2}}{\left|a1\right|}} + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)double f(double a1, double a2, double th) {
double r103912 = th;
double r103913 = cos(r103912);
double r103914 = 2.0;
double r103915 = sqrt(r103914);
double r103916 = r103913 / r103915;
double r103917 = a1;
double r103918 = r103917 * r103917;
double r103919 = r103916 * r103918;
double r103920 = a2;
double r103921 = r103920 * r103920;
double r103922 = r103916 * r103921;
double r103923 = r103919 + r103922;
return r103923;
}
double f(double a1, double a2, double th) {
double r103924 = th;
double r103925 = cos(r103924);
double r103926 = a1;
double r103927 = 2.0;
double r103928 = pow(r103926, r103927);
double r103929 = sqrt(r103928);
double r103930 = 2.0;
double r103931 = sqrt(r103930);
double r103932 = fabs(r103926);
double r103933 = r103931 / r103932;
double r103934 = r103929 / r103933;
double r103935 = r103925 * r103934;
double r103936 = r103925 / r103931;
double r103937 = a2;
double r103938 = r103937 * r103937;
double r103939 = r103936 * r103938;
double r103940 = r103935 + r103939;
return r103940;
}



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 add-sqr-sqrt0.5
Applied associate-/l*0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2020027
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
:precision binary64
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))