\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\sqrt{a2 \cdot a2 + a1 \cdot a1} \cdot \left(\sqrt{\frac{a2 \cdot a2 + a1 \cdot a1}{2}} \cdot \cos th\right)double f(double a1, double a2, double th) {
double r2455337 = th;
double r2455338 = cos(r2455337);
double r2455339 = 2.0;
double r2455340 = sqrt(r2455339);
double r2455341 = r2455338 / r2455340;
double r2455342 = a1;
double r2455343 = r2455342 * r2455342;
double r2455344 = r2455341 * r2455343;
double r2455345 = a2;
double r2455346 = r2455345 * r2455345;
double r2455347 = r2455341 * r2455346;
double r2455348 = r2455344 + r2455347;
return r2455348;
}
double f(double a1, double a2, double th) {
double r2455349 = a2;
double r2455350 = r2455349 * r2455349;
double r2455351 = a1;
double r2455352 = r2455351 * r2455351;
double r2455353 = r2455350 + r2455352;
double r2455354 = sqrt(r2455353);
double r2455355 = 2.0;
double r2455356 = r2455353 / r2455355;
double r2455357 = sqrt(r2455356);
double r2455358 = th;
double r2455359 = cos(r2455358);
double r2455360 = r2455357 * r2455359;
double r2455361 = r2455354 * r2455360;
return r2455361;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Results
Initial program 0.5
Simplified0.5
rmApplied associate-/l*0.5
rmApplied div-inv0.5
Applied add-sqr-sqrt0.5
Applied times-frac0.5
Simplified0.5
rmApplied sqrt-undiv0.3
rmApplied associate-*r*0.3
Final simplification0.3
herbie shell --seed 2019200
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
(+ (* (/ (cos th) (sqrt 2.0)) (* a1 a1)) (* (/ (cos th) (sqrt 2.0)) (* a2 a2))))