\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\left(\cos th \cdot \frac{a1}{\sqrt{2}}\right) \cdot a1 + \frac{\cos th}{\sqrt{\sqrt{\sqrt{2}}}} \cdot \left(\frac{\frac{1}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt{\sqrt{2}}}} \cdot \left(a2 \cdot a2\right)\right)double f(double a1, double a2, double th) {
double r98861 = th;
double r98862 = cos(r98861);
double r98863 = 2.0;
double r98864 = sqrt(r98863);
double r98865 = r98862 / r98864;
double r98866 = a1;
double r98867 = r98866 * r98866;
double r98868 = r98865 * r98867;
double r98869 = a2;
double r98870 = r98869 * r98869;
double r98871 = r98865 * r98870;
double r98872 = r98868 + r98871;
return r98872;
}
double f(double a1, double a2, double th) {
double r98873 = th;
double r98874 = cos(r98873);
double r98875 = a1;
double r98876 = 2.0;
double r98877 = sqrt(r98876);
double r98878 = r98875 / r98877;
double r98879 = r98874 * r98878;
double r98880 = r98879 * r98875;
double r98881 = sqrt(r98877);
double r98882 = sqrt(r98881);
double r98883 = r98874 / r98882;
double r98884 = 1.0;
double r98885 = r98884 / r98881;
double r98886 = r98885 / r98882;
double r98887 = a2;
double r98888 = r98887 * r98887;
double r98889 = r98886 * r98888;
double r98890 = r98883 * r98889;
double r98891 = r98880 + r98890;
return r98891;
}



Bits error versus a1



Bits error versus a2



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