\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 \frac{\cos th \cdot \left(a1 \cdot a1 + a2 \cdot a2\right)}{\sqrt{\sqrt{2}}}double f(double a1, double a2, double th) {
double r101360 = th;
double r101361 = cos(r101360);
double r101362 = 2.0;
double r101363 = sqrt(r101362);
double r101364 = r101361 / r101363;
double r101365 = a1;
double r101366 = r101365 * r101365;
double r101367 = r101364 * r101366;
double r101368 = a2;
double r101369 = r101368 * r101368;
double r101370 = r101364 * r101369;
double r101371 = r101367 + r101370;
return r101371;
}
double f(double a1, double a2, double th) {
double r101372 = 1.0;
double r101373 = 2.0;
double r101374 = sqrt(r101373);
double r101375 = sqrt(r101374);
double r101376 = sqrt(r101375);
double r101377 = r101372 / r101376;
double r101378 = r101377 / r101376;
double r101379 = th;
double r101380 = cos(r101379);
double r101381 = a1;
double r101382 = r101381 * r101381;
double r101383 = a2;
double r101384 = r101383 * r101383;
double r101385 = r101382 + r101384;
double r101386 = r101380 * r101385;
double r101387 = r101386 / r101375;
double r101388 = r101378 * r101387;
return r101388;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Results
Initial program 0.5
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied sqrt-prod0.5
Applied associate-/r*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.6
Applied associate-*l*0.6
Simplified0.4
Final simplification0.4
herbie shell --seed 2019303
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
:precision binary64
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))