\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)a2 \cdot \frac{a2 \cdot \cos th}{\sqrt{2}} + \left(\left(\frac{\frac{1}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt[3]{\sqrt{2}}}} \cdot a1\right) \cdot a1\right) \cdot \frac{\cos th}{\left|\sqrt[3]{\sqrt{2}}\right|}double f(double a1, double a2, double th) {
double r15226024 = th;
double r15226025 = cos(r15226024);
double r15226026 = 2.0;
double r15226027 = sqrt(r15226026);
double r15226028 = r15226025 / r15226027;
double r15226029 = a1;
double r15226030 = r15226029 * r15226029;
double r15226031 = r15226028 * r15226030;
double r15226032 = a2;
double r15226033 = r15226032 * r15226032;
double r15226034 = r15226028 * r15226033;
double r15226035 = r15226031 + r15226034;
return r15226035;
}
double f(double a1, double a2, double th) {
double r15226036 = a2;
double r15226037 = th;
double r15226038 = cos(r15226037);
double r15226039 = r15226036 * r15226038;
double r15226040 = 2.0;
double r15226041 = sqrt(r15226040);
double r15226042 = r15226039 / r15226041;
double r15226043 = r15226036 * r15226042;
double r15226044 = 1.0;
double r15226045 = sqrt(r15226041);
double r15226046 = r15226044 / r15226045;
double r15226047 = cbrt(r15226041);
double r15226048 = sqrt(r15226047);
double r15226049 = r15226046 / r15226048;
double r15226050 = a1;
double r15226051 = r15226049 * r15226050;
double r15226052 = r15226051 * r15226050;
double r15226053 = fabs(r15226047);
double r15226054 = r15226038 / r15226053;
double r15226055 = r15226052 * r15226054;
double r15226056 = r15226043 + r15226055;
return r15226056;
}



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
Taylor expanded around -inf 0.5
Simplified0.5
rmApplied add-cube-cbrt0.5
Applied sqrt-prod0.5
Applied div-inv0.5
Applied times-frac0.4
Applied associate-*l*0.4
Simplified0.4
rmApplied associate-*r*0.4
Final simplification0.4
herbie shell --seed 2019121
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))