\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{\sqrt{a1 \cdot a1 + a2 \cdot a2}}{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}}\right) \cdot \frac{\sqrt{a1 \cdot a1 + a2 \cdot a2}}{\sqrt[3]{\sqrt{2}}}double f(double a1, double a2, double th) {
double r90902 = th;
double r90903 = cos(r90902);
double r90904 = 2.0;
double r90905 = sqrt(r90904);
double r90906 = r90903 / r90905;
double r90907 = a1;
double r90908 = r90907 * r90907;
double r90909 = r90906 * r90908;
double r90910 = a2;
double r90911 = r90910 * r90910;
double r90912 = r90906 * r90911;
double r90913 = r90909 + r90912;
return r90913;
}
double f(double a1, double a2, double th) {
double r90914 = th;
double r90915 = cos(r90914);
double r90916 = a1;
double r90917 = r90916 * r90916;
double r90918 = a2;
double r90919 = r90918 * r90918;
double r90920 = r90917 + r90919;
double r90921 = sqrt(r90920);
double r90922 = 2.0;
double r90923 = sqrt(r90922);
double r90924 = cbrt(r90923);
double r90925 = r90924 * r90924;
double r90926 = r90921 / r90925;
double r90927 = r90915 * r90926;
double r90928 = r90921 / r90924;
double r90929 = r90927 * r90928;
return r90929;
}



Bits error versus a1



Bits error versus a2



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