\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{\frac{\cos th}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt{2}}} \cdot \left(a1 \cdot a1\right) + \frac{\frac{\cos th}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt{2}}} \cdot \left(a2 \cdot a2\right)double f(double a1, double a2, double th) {
double r89732 = th;
double r89733 = cos(r89732);
double r89734 = 2.0;
double r89735 = sqrt(r89734);
double r89736 = r89733 / r89735;
double r89737 = a1;
double r89738 = r89737 * r89737;
double r89739 = r89736 * r89738;
double r89740 = a2;
double r89741 = r89740 * r89740;
double r89742 = r89736 * r89741;
double r89743 = r89739 + r89742;
return r89743;
}
double f(double a1, double a2, double th) {
double r89744 = th;
double r89745 = cos(r89744);
double r89746 = 2.0;
double r89747 = sqrt(r89746);
double r89748 = sqrt(r89747);
double r89749 = r89745 / r89748;
double r89750 = r89749 / r89748;
double r89751 = a1;
double r89752 = r89751 * r89751;
double r89753 = r89750 * r89752;
double r89754 = a2;
double r89755 = r89754 * r89754;
double r89756 = r89750 * r89755;
double r89757 = r89753 + r89756;
return r89757;
}



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