\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 \left(\frac{\sqrt{{a2}^{2} + {a1}^{2}}}{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}} \cdot \left(\frac{1}{\sqrt[3]{\sqrt[3]{\sqrt{2}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt{2}}}} \cdot \frac{\sqrt{{a2}^{2} + {a1}^{2}}}{\sqrt[3]{\sqrt[3]{\sqrt{2}}}}\right)\right)double f(double a1, double a2, double th) {
double r110026 = th;
double r110027 = cos(r110026);
double r110028 = 2.0;
double r110029 = sqrt(r110028);
double r110030 = r110027 / r110029;
double r110031 = a1;
double r110032 = r110031 * r110031;
double r110033 = r110030 * r110032;
double r110034 = a2;
double r110035 = r110034 * r110034;
double r110036 = r110030 * r110035;
double r110037 = r110033 + r110036;
return r110037;
}
double f(double a1, double a2, double th) {
double r110038 = th;
double r110039 = cos(r110038);
double r110040 = a2;
double r110041 = 2.0;
double r110042 = pow(r110040, r110041);
double r110043 = a1;
double r110044 = pow(r110043, r110041);
double r110045 = r110042 + r110044;
double r110046 = sqrt(r110045);
double r110047 = 2.0;
double r110048 = sqrt(r110047);
double r110049 = cbrt(r110048);
double r110050 = r110049 * r110049;
double r110051 = r110046 / r110050;
double r110052 = 1.0;
double r110053 = cbrt(r110049);
double r110054 = r110053 * r110053;
double r110055 = r110052 / r110054;
double r110056 = r110046 / r110053;
double r110057 = r110055 * r110056;
double r110058 = r110051 * r110057;
double r110059 = r110039 * r110058;
return r110059;
}



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-cube-cbrt0.5
Applied add-sqr-sqrt0.5
Applied times-frac0.5
rmApplied add-cube-cbrt0.5
Applied *-un-lft-identity0.5
Applied sqrt-prod0.5
Applied times-frac0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019322
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
:precision binary64
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))