\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{\left(\cos th \cdot \sqrt{a1 \cdot a1 + a2 \cdot a2}\right) \cdot \sqrt{a1 \cdot a1 + a2 \cdot a2}}{\sqrt{2}}double f(double a1, double a2, double th) {
double r99449 = th;
double r99450 = cos(r99449);
double r99451 = 2.0;
double r99452 = sqrt(r99451);
double r99453 = r99450 / r99452;
double r99454 = a1;
double r99455 = r99454 * r99454;
double r99456 = r99453 * r99455;
double r99457 = a2;
double r99458 = r99457 * r99457;
double r99459 = r99453 * r99458;
double r99460 = r99456 + r99459;
return r99460;
}
double f(double a1, double a2, double th) {
double r99461 = th;
double r99462 = cos(r99461);
double r99463 = a1;
double r99464 = r99463 * r99463;
double r99465 = a2;
double r99466 = r99465 * r99465;
double r99467 = r99464 + r99466;
double r99468 = sqrt(r99467);
double r99469 = r99462 * r99468;
double r99470 = r99469 * r99468;
double r99471 = 2.0;
double r99472 = sqrt(r99471);
double r99473 = r99470 / r99472;
return r99473;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Results
Initial program 0.5
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied associate-*l*0.5
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied associate-*r*0.5
Final simplification0.5
herbie shell --seed 2020045
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
:precision binary64
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))