\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{\sqrt{a1 \cdot a1 + a2 \cdot a2}}{\frac{\frac{\sqrt{2}}{\cos th}}{\sqrt{{a2}^{2} + a1 \cdot a1}}}double f(double a1, double a2, double th) {
double r104033 = th;
double r104034 = cos(r104033);
double r104035 = 2.0;
double r104036 = sqrt(r104035);
double r104037 = r104034 / r104036;
double r104038 = a1;
double r104039 = r104038 * r104038;
double r104040 = r104037 * r104039;
double r104041 = a2;
double r104042 = r104041 * r104041;
double r104043 = r104037 * r104042;
double r104044 = r104040 + r104043;
return r104044;
}
double f(double a1, double a2, double th) {
double r104045 = a1;
double r104046 = r104045 * r104045;
double r104047 = a2;
double r104048 = r104047 * r104047;
double r104049 = r104046 + r104048;
double r104050 = sqrt(r104049);
double r104051 = 2.0;
double r104052 = sqrt(r104051);
double r104053 = th;
double r104054 = cos(r104053);
double r104055 = r104052 / r104054;
double r104056 = 2.0;
double r104057 = pow(r104047, r104056);
double r104058 = r104057 + r104046;
double r104059 = sqrt(r104058);
double r104060 = r104055 / r104059;
double r104061 = r104050 / r104060;
return r104061;
}



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 associate-/l*0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019194
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
(+ (* (/ (cos th) (sqrt 2.0)) (* a1 a1)) (* (/ (cos th) (sqrt 2.0)) (* a2 a2))))