\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{\frac{1}{\sqrt{\sqrt{\sqrt{2}}}}}{\sqrt{\sqrt{\sqrt{2}}}} \cdot \left(a1 \cdot \left(\frac{\cos th}{\sqrt{\sqrt{2}}} \cdot a1\right)\right) + \frac{\cos th \cdot a2}{\sqrt{2}} \cdot a2double f(double a1, double a2, double th) {
double r104400 = th;
double r104401 = cos(r104400);
double r104402 = 2.0;
double r104403 = sqrt(r104402);
double r104404 = r104401 / r104403;
double r104405 = a1;
double r104406 = r104405 * r104405;
double r104407 = r104404 * r104406;
double r104408 = a2;
double r104409 = r104408 * r104408;
double r104410 = r104404 * r104409;
double r104411 = r104407 + r104410;
return r104411;
}
double f(double a1, double a2, double th) {
double r104412 = 1.0;
double r104413 = 2.0;
double r104414 = sqrt(r104413);
double r104415 = sqrt(r104414);
double r104416 = sqrt(r104415);
double r104417 = r104412 / r104416;
double r104418 = r104417 / r104416;
double r104419 = a1;
double r104420 = th;
double r104421 = cos(r104420);
double r104422 = r104421 / r104415;
double r104423 = r104422 * r104419;
double r104424 = r104419 * r104423;
double r104425 = r104418 * r104424;
double r104426 = a2;
double r104427 = r104421 * r104426;
double r104428 = r104427 / r104414;
double r104429 = r104428 * r104426;
double r104430 = r104425 + r104429;
return r104430;
}



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
rmApplied associate-*l/0.5
rmApplied add-sqr-sqrt0.5
Applied sqrt-prod0.5
Applied sqrt-prod0.5
Applied add-sqr-sqrt0.5
Applied sqrt-prod0.5
Applied sqrt-prod0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied times-frac0.5
Applied associate-*l*0.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2020047
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
:precision binary64
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))