\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) + \left(\frac{\cos th}{\left|\sqrt[3]{\sqrt{2}}\right|} \cdot \frac{\frac{1}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt[3]{\sqrt{2}}}}\right) \cdot \left(a2 \cdot a2\right)double f(double a1, double a2, double th) {
double r99682 = th;
double r99683 = cos(r99682);
double r99684 = 2.0;
double r99685 = sqrt(r99684);
double r99686 = r99683 / r99685;
double r99687 = a1;
double r99688 = r99687 * r99687;
double r99689 = r99686 * r99688;
double r99690 = a2;
double r99691 = r99690 * r99690;
double r99692 = r99686 * r99691;
double r99693 = r99689 + r99692;
return r99693;
}
double f(double a1, double a2, double th) {
double r99694 = th;
double r99695 = cos(r99694);
double r99696 = 2.0;
double r99697 = sqrt(r99696);
double r99698 = sqrt(r99697);
double r99699 = r99695 / r99698;
double r99700 = r99699 / r99698;
double r99701 = a1;
double r99702 = r99701 * r99701;
double r99703 = r99700 * r99702;
double r99704 = cbrt(r99697);
double r99705 = fabs(r99704);
double r99706 = r99695 / r99705;
double r99707 = 1.0;
double r99708 = r99707 / r99698;
double r99709 = sqrt(r99704);
double r99710 = r99708 / r99709;
double r99711 = r99706 * r99710;
double r99712 = a2;
double r99713 = r99712 * r99712;
double r99714 = r99711 * r99713;
double r99715 = r99703 + r99714;
return r99715;
}



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