\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\cos th \cdot \left(\frac{\frac{a2 \cdot a2}{\sqrt{\sqrt{\sqrt[3]{2}}} \cdot \sqrt{\sqrt{2}}}}{\sqrt{\sqrt{\sqrt[3]{2} \cdot \sqrt[3]{2}}}} + \frac{a1 \cdot a1}{\sqrt{2}}\right)double f(double a1, double a2, double th) {
double r73766 = th;
double r73767 = cos(r73766);
double r73768 = 2.0;
double r73769 = sqrt(r73768);
double r73770 = r73767 / r73769;
double r73771 = a1;
double r73772 = r73771 * r73771;
double r73773 = r73770 * r73772;
double r73774 = a2;
double r73775 = r73774 * r73774;
double r73776 = r73770 * r73775;
double r73777 = r73773 + r73776;
return r73777;
}
double f(double a1, double a2, double th) {
double r73778 = th;
double r73779 = cos(r73778);
double r73780 = a2;
double r73781 = r73780 * r73780;
double r73782 = 2.0;
double r73783 = cbrt(r73782);
double r73784 = sqrt(r73783);
double r73785 = sqrt(r73784);
double r73786 = sqrt(r73782);
double r73787 = sqrt(r73786);
double r73788 = r73785 * r73787;
double r73789 = r73781 / r73788;
double r73790 = r73783 * r73783;
double r73791 = sqrt(r73790);
double r73792 = sqrt(r73791);
double r73793 = r73789 / r73792;
double r73794 = a1;
double r73795 = r73794 * r73794;
double r73796 = r73795 / r73786;
double r73797 = r73793 + r73796;
double r73798 = r73779 * r73797;
return r73798;
}



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-cube-cbrt0.6
Applied sqrt-prod0.6
Applied sqrt-prod0.6
Applied div-inv0.5
Applied times-frac0.5
Applied associate-*l*0.5
Final simplification0.5
herbie shell --seed 2019297
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
:precision binary64
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))