\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\left(\cos th \cdot \frac{a1}{\sqrt{2}}\right) \cdot a1 + \frac{\cos th}{\sqrt{\sqrt{\sqrt{2}}}} \cdot \left(\frac{\frac{1}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt{\sqrt{2}}}} \cdot \left(a2 \cdot a2\right)\right)double f(double a1, double a2, double th) {
double r97055 = th;
double r97056 = cos(r97055);
double r97057 = 2.0;
double r97058 = sqrt(r97057);
double r97059 = r97056 / r97058;
double r97060 = a1;
double r97061 = r97060 * r97060;
double r97062 = r97059 * r97061;
double r97063 = a2;
double r97064 = r97063 * r97063;
double r97065 = r97059 * r97064;
double r97066 = r97062 + r97065;
return r97066;
}
double f(double a1, double a2, double th) {
double r97067 = th;
double r97068 = cos(r97067);
double r97069 = a1;
double r97070 = 2.0;
double r97071 = sqrt(r97070);
double r97072 = r97069 / r97071;
double r97073 = r97068 * r97072;
double r97074 = r97073 * r97069;
double r97075 = sqrt(r97071);
double r97076 = sqrt(r97075);
double r97077 = r97068 / r97076;
double r97078 = 1.0;
double r97079 = r97078 / r97075;
double r97080 = r97079 / r97076;
double r97081 = a2;
double r97082 = r97081 * r97081;
double r97083 = r97080 * r97082;
double r97084 = r97077 * r97083;
double r97085 = r97074 + r97084;
return r97085;
}



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