\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 \frac{\frac{a2 \cdot a2 + a1 \cdot a1}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt{2}}}double f(double a1, double a2, double th) {
double r69903 = th;
double r69904 = cos(r69903);
double r69905 = 2.0;
double r69906 = sqrt(r69905);
double r69907 = r69904 / r69906;
double r69908 = a1;
double r69909 = r69908 * r69908;
double r69910 = r69907 * r69909;
double r69911 = a2;
double r69912 = r69911 * r69911;
double r69913 = r69907 * r69912;
double r69914 = r69910 + r69913;
return r69914;
}
double f(double a1, double a2, double th) {
double r69915 = th;
double r69916 = cos(r69915);
double r69917 = a2;
double r69918 = r69917 * r69917;
double r69919 = a1;
double r69920 = r69919 * r69919;
double r69921 = r69918 + r69920;
double r69922 = 2.0;
double r69923 = sqrt(r69922);
double r69924 = sqrt(r69923);
double r69925 = r69921 / r69924;
double r69926 = r69925 / r69924;
double r69927 = r69916 * r69926;
return r69927;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Results
Initial program 0.5
Simplified0.5
rmApplied div-inv0.5
Applied associate-*l*0.5
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied sqrt-prod0.5
Applied associate-/r*0.5
Final simplification0.5
herbie shell --seed 2019323
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
:precision binary64
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))