\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\left(\frac{\cos th}{\sqrt{2}} \cdot a1\right) \cdot a1 + \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 r111674 = th;
double r111675 = cos(r111674);
double r111676 = 2.0;
double r111677 = sqrt(r111676);
double r111678 = r111675 / r111677;
double r111679 = a1;
double r111680 = r111679 * r111679;
double r111681 = r111678 * r111680;
double r111682 = a2;
double r111683 = r111682 * r111682;
double r111684 = r111678 * r111683;
double r111685 = r111681 + r111684;
return r111685;
}
double f(double a1, double a2, double th) {
double r111686 = th;
double r111687 = cos(r111686);
double r111688 = 2.0;
double r111689 = sqrt(r111688);
double r111690 = r111687 / r111689;
double r111691 = a1;
double r111692 = r111690 * r111691;
double r111693 = r111692 * r111691;
double r111694 = sqrt(r111689);
double r111695 = r111687 / r111694;
double r111696 = r111695 / r111694;
double r111697 = a2;
double r111698 = r111697 * r111697;
double r111699 = r111696 * r111698;
double r111700 = r111693 + r111699;
return r111700;
}



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
Final simplification0.5
herbie shell --seed 2019346
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
:precision binary64
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))