\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{a2 \cdot \cos th}{\frac{\sqrt{2}}{a2}} + \frac{a1 \cdot a1}{\sqrt{2}} \cdot \cos thdouble f(double a1, double a2, double th) {
double r1504277 = th;
double r1504278 = cos(r1504277);
double r1504279 = 2.0;
double r1504280 = sqrt(r1504279);
double r1504281 = r1504278 / r1504280;
double r1504282 = a1;
double r1504283 = r1504282 * r1504282;
double r1504284 = r1504281 * r1504283;
double r1504285 = a2;
double r1504286 = r1504285 * r1504285;
double r1504287 = r1504281 * r1504286;
double r1504288 = r1504284 + r1504287;
return r1504288;
}
double f(double a1, double a2, double th) {
double r1504289 = a2;
double r1504290 = th;
double r1504291 = cos(r1504290);
double r1504292 = r1504289 * r1504291;
double r1504293 = 2.0;
double r1504294 = sqrt(r1504293);
double r1504295 = r1504294 / r1504289;
double r1504296 = r1504292 / r1504295;
double r1504297 = a1;
double r1504298 = r1504297 * r1504297;
double r1504299 = r1504298 / r1504294;
double r1504300 = r1504299 * r1504291;
double r1504301 = r1504296 + r1504300;
return r1504301;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Results
Initial program 0.5
rmApplied div-inv0.5
Applied associate-*l*0.5
Simplified0.5
rmApplied div-inv0.5
Applied associate-*l*0.5
Simplified0.4
rmApplied associate-*r/0.4
Final simplification0.4
herbie shell --seed 2019144 +o rules:numerics
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))