\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{a1 \cdot a1}{\sqrt{\sqrt{2}} \cdot \sqrt{\sqrt{\sqrt{2}}}} \cdot \frac{\cos th}{\sqrt{\sqrt{\sqrt{2}}}} + \frac{\cos th \cdot \left(a2 \cdot a2\right)}{\sqrt{2}}double f(double a1, double a2, double th) {
double r2968031 = th;
double r2968032 = cos(r2968031);
double r2968033 = 2.0;
double r2968034 = sqrt(r2968033);
double r2968035 = r2968032 / r2968034;
double r2968036 = a1;
double r2968037 = r2968036 * r2968036;
double r2968038 = r2968035 * r2968037;
double r2968039 = a2;
double r2968040 = r2968039 * r2968039;
double r2968041 = r2968035 * r2968040;
double r2968042 = r2968038 + r2968041;
return r2968042;
}
double f(double a1, double a2, double th) {
double r2968043 = a1;
double r2968044 = r2968043 * r2968043;
double r2968045 = 2.0;
double r2968046 = sqrt(r2968045);
double r2968047 = sqrt(r2968046);
double r2968048 = sqrt(r2968047);
double r2968049 = r2968047 * r2968048;
double r2968050 = r2968044 / r2968049;
double r2968051 = th;
double r2968052 = cos(r2968051);
double r2968053 = r2968052 / r2968048;
double r2968054 = r2968050 * r2968053;
double r2968055 = a2;
double r2968056 = r2968055 * r2968055;
double r2968057 = r2968052 * r2968056;
double r2968058 = r2968057 / r2968046;
double r2968059 = r2968054 + r2968058;
return r2968059;
}



Bits error versus a1



Bits error versus a2



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