\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(\left(a2 \cdot a2 + a1 \cdot a1\right) \cdot \frac{\cos th}{\sqrt{\sqrt{2}}}\right)double f(double a1, double a2, double th) {
double r93944 = th;
double r93945 = cos(r93944);
double r93946 = 2.0;
double r93947 = sqrt(r93946);
double r93948 = r93945 / r93947;
double r93949 = a1;
double r93950 = r93949 * r93949;
double r93951 = r93948 * r93950;
double r93952 = a2;
double r93953 = r93952 * r93952;
double r93954 = r93948 * r93953;
double r93955 = r93951 + r93954;
return r93955;
}
double f(double a1, double a2, double th) {
double r93956 = 1.0;
double r93957 = 2.0;
double r93958 = sqrt(r93957);
double r93959 = sqrt(r93958);
double r93960 = sqrt(r93959);
double r93961 = r93956 / r93960;
double r93962 = r93961 / r93960;
double r93963 = a2;
double r93964 = r93963 * r93963;
double r93965 = a1;
double r93966 = r93965 * r93965;
double r93967 = r93964 + r93966;
double r93968 = th;
double r93969 = cos(r93968);
double r93970 = r93969 / r93959;
double r93971 = r93967 * r93970;
double r93972 = r93962 * r93971;
return r93972;
}



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 2019306
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
:precision binary64
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))