\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{\sqrt{2}}}} \cdot \frac{\mathsf{fma}\left(a1, a1, a2 \cdot a2\right)}{\sqrt{\sqrt{\sqrt{2}}}}}{\sqrt{\sqrt{2}}}double f(double a1, double a2, double th) {
double r89824 = th;
double r89825 = cos(r89824);
double r89826 = 2.0;
double r89827 = sqrt(r89826);
double r89828 = r89825 / r89827;
double r89829 = a1;
double r89830 = r89829 * r89829;
double r89831 = r89828 * r89830;
double r89832 = a2;
double r89833 = r89832 * r89832;
double r89834 = r89828 * r89833;
double r89835 = r89831 + r89834;
return r89835;
}
double f(double a1, double a2, double th) {
double r89836 = th;
double r89837 = cos(r89836);
double r89838 = 2.0;
double r89839 = sqrt(r89838);
double r89840 = sqrt(r89839);
double r89841 = sqrt(r89840);
double r89842 = r89837 / r89841;
double r89843 = a1;
double r89844 = a2;
double r89845 = r89844 * r89844;
double r89846 = fma(r89843, r89843, r89845);
double r89847 = r89846 / r89841;
double r89848 = r89842 * r89847;
double r89849 = r89848 / r89840;
return r89849;
}



Bits error versus a1



Bits error versus a2



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