\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{\frac{a2 \cdot a2}{\sqrt{\sqrt{\sqrt[3]{2}}} \cdot \sqrt{\sqrt{2}}}}{\sqrt{\sqrt{\sqrt[3]{2} \cdot \sqrt[3]{2}}}} + \frac{a1 \cdot a1}{\sqrt{2}}\right)double f(double a1, double a2, double th) {
double r74258 = th;
double r74259 = cos(r74258);
double r74260 = 2.0;
double r74261 = sqrt(r74260);
double r74262 = r74259 / r74261;
double r74263 = a1;
double r74264 = r74263 * r74263;
double r74265 = r74262 * r74264;
double r74266 = a2;
double r74267 = r74266 * r74266;
double r74268 = r74262 * r74267;
double r74269 = r74265 + r74268;
return r74269;
}
double f(double a1, double a2, double th) {
double r74270 = th;
double r74271 = cos(r74270);
double r74272 = a2;
double r74273 = r74272 * r74272;
double r74274 = 2.0;
double r74275 = cbrt(r74274);
double r74276 = sqrt(r74275);
double r74277 = sqrt(r74276);
double r74278 = sqrt(r74274);
double r74279 = sqrt(r74278);
double r74280 = r74277 * r74279;
double r74281 = r74273 / r74280;
double r74282 = r74275 * r74275;
double r74283 = sqrt(r74282);
double r74284 = sqrt(r74283);
double r74285 = r74281 / r74284;
double r74286 = a1;
double r74287 = r74286 * r74286;
double r74288 = r74287 / r74278;
double r74289 = r74285 + r74288;
double r74290 = r74271 * r74289;
return r74290;
}



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