\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\left(\frac{\frac{\cos th}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt{2}}} \cdot a1\right) \cdot a1 + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)double f(double a1, double a2, double th) {
double r97417 = th;
double r97418 = cos(r97417);
double r97419 = 2.0;
double r97420 = sqrt(r97419);
double r97421 = r97418 / r97420;
double r97422 = a1;
double r97423 = r97422 * r97422;
double r97424 = r97421 * r97423;
double r97425 = a2;
double r97426 = r97425 * r97425;
double r97427 = r97421 * r97426;
double r97428 = r97424 + r97427;
return r97428;
}
double f(double a1, double a2, double th) {
double r97429 = th;
double r97430 = cos(r97429);
double r97431 = 2.0;
double r97432 = sqrt(r97431);
double r97433 = sqrt(r97432);
double r97434 = r97430 / r97433;
double r97435 = r97434 / r97433;
double r97436 = a1;
double r97437 = r97435 * r97436;
double r97438 = r97437 * r97436;
double r97439 = r97430 / r97432;
double r97440 = a2;
double r97441 = r97440 * r97440;
double r97442 = r97439 * r97441;
double r97443 = r97438 + r97442;
return r97443;
}



Bits error versus a1



Bits error versus a2



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