\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{\left(\cos th \cdot \sqrt{a1 \cdot a1 + a2 \cdot a2}\right) \cdot \sqrt{a1 \cdot a1 + a2 \cdot a2}}{\sqrt{2}}double f(double a1, double a2, double th) {
double r59090 = th;
double r59091 = cos(r59090);
double r59092 = 2.0;
double r59093 = sqrt(r59092);
double r59094 = r59091 / r59093;
double r59095 = a1;
double r59096 = r59095 * r59095;
double r59097 = r59094 * r59096;
double r59098 = a2;
double r59099 = r59098 * r59098;
double r59100 = r59094 * r59099;
double r59101 = r59097 + r59100;
return r59101;
}
double f(double a1, double a2, double th) {
double r59102 = th;
double r59103 = cos(r59102);
double r59104 = a1;
double r59105 = r59104 * r59104;
double r59106 = a2;
double r59107 = r59106 * r59106;
double r59108 = r59105 + r59107;
double r59109 = sqrt(r59108);
double r59110 = r59103 * r59109;
double r59111 = r59110 * r59109;
double r59112 = 2.0;
double r59113 = sqrt(r59112);
double r59114 = r59111 / r59113;
return r59114;
}



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