\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{\cos th \cdot \left(a2 \cdot a2\right)}{\sqrt{2}} + \frac{\left(a1 \cdot a1\right) \cdot \cos th}{\sqrt{\sqrt{2}}} \cdot \frac{\frac{1}{\sqrt{\sqrt{\sqrt{2}}}}}{\sqrt{\sqrt{\sqrt{2}}}}double f(double a1, double a2, double th) {
double r1913843 = th;
double r1913844 = cos(r1913843);
double r1913845 = 2.0;
double r1913846 = sqrt(r1913845);
double r1913847 = r1913844 / r1913846;
double r1913848 = a1;
double r1913849 = r1913848 * r1913848;
double r1913850 = r1913847 * r1913849;
double r1913851 = a2;
double r1913852 = r1913851 * r1913851;
double r1913853 = r1913847 * r1913852;
double r1913854 = r1913850 + r1913853;
return r1913854;
}
double f(double a1, double a2, double th) {
double r1913855 = th;
double r1913856 = cos(r1913855);
double r1913857 = a2;
double r1913858 = r1913857 * r1913857;
double r1913859 = r1913856 * r1913858;
double r1913860 = 2.0;
double r1913861 = sqrt(r1913860);
double r1913862 = r1913859 / r1913861;
double r1913863 = a1;
double r1913864 = r1913863 * r1913863;
double r1913865 = r1913864 * r1913856;
double r1913866 = sqrt(r1913861);
double r1913867 = r1913865 / r1913866;
double r1913868 = 1.0;
double r1913869 = sqrt(r1913866);
double r1913870 = r1913868 / r1913869;
double r1913871 = r1913870 / r1913869;
double r1913872 = r1913867 * r1913871;
double r1913873 = r1913862 + r1913872;
return r1913873;
}



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 sqrt-prod0.5
Applied associate-/r*0.5
rmApplied add-sqr-sqrt0.5
Applied sqrt-prod0.5
Applied add-sqr-sqrt0.5
Applied sqrt-prod0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied times-frac0.5
Applied associate-*l*0.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2019138 +o rules:numerics
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))