\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{\frac{1}{\sqrt{\sqrt{\sqrt{2}}}}}{\sqrt{\sqrt{\sqrt{2}}}} \cdot \left(\frac{\cos th}{\sqrt{\sqrt{2}}} \cdot \left(a1 \cdot a1 + a2 \cdot a2\right)\right)double f(double a1, double a2, double th) {
double r134930 = th;
double r134931 = cos(r134930);
double r134932 = 2.0;
double r134933 = sqrt(r134932);
double r134934 = r134931 / r134933;
double r134935 = a1;
double r134936 = r134935 * r134935;
double r134937 = r134934 * r134936;
double r134938 = a2;
double r134939 = r134938 * r134938;
double r134940 = r134934 * r134939;
double r134941 = r134937 + r134940;
return r134941;
}
double f(double a1, double a2, double th) {
double r134942 = 1.0;
double r134943 = 2.0;
double r134944 = sqrt(r134943);
double r134945 = sqrt(r134944);
double r134946 = sqrt(r134945);
double r134947 = r134942 / r134946;
double r134948 = r134947 / r134946;
double r134949 = th;
double r134950 = cos(r134949);
double r134951 = r134950 / r134945;
double r134952 = a1;
double r134953 = r134952 * r134952;
double r134954 = a2;
double r134955 = r134954 * r134954;
double r134956 = r134953 + r134955;
double r134957 = r134951 * r134956;
double r134958 = r134948 * r134957;
return r134958;
}



Bits error versus a1



Bits error versus a2



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