\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 r69822 = th;
double r69823 = cos(r69822);
double r69824 = 2.0;
double r69825 = sqrt(r69824);
double r69826 = r69823 / r69825;
double r69827 = a1;
double r69828 = r69827 * r69827;
double r69829 = r69826 * r69828;
double r69830 = a2;
double r69831 = r69830 * r69830;
double r69832 = r69826 * r69831;
double r69833 = r69829 + r69832;
return r69833;
}
double f(double a1, double a2, double th) {
double r69834 = th;
double r69835 = cos(r69834);
double r69836 = 2.0;
double r69837 = sqrt(r69836);
double r69838 = sqrt(r69837);
double r69839 = sqrt(r69838);
double r69840 = r69835 / r69839;
double r69841 = a1;
double r69842 = a2;
double r69843 = r69842 * r69842;
double r69844 = fma(r69841, r69841, r69843);
double r69845 = r69844 / r69839;
double r69846 = r69840 * r69845;
double r69847 = r69846 / r69838;
return r69847;
}



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 2019305 +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))))