\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\left(\frac{\cos th}{\sqrt{\sqrt{\sqrt{2}}}} \cdot \frac{\frac{1}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt{\sqrt{2}}}}\right) \cdot \left(a1 \cdot a1 + a2 \cdot a2\right)double f(double a1, double a2, double th) {
double r63387 = th;
double r63388 = cos(r63387);
double r63389 = 2.0;
double r63390 = sqrt(r63389);
double r63391 = r63388 / r63390;
double r63392 = a1;
double r63393 = r63392 * r63392;
double r63394 = r63391 * r63393;
double r63395 = a2;
double r63396 = r63395 * r63395;
double r63397 = r63391 * r63396;
double r63398 = r63394 + r63397;
return r63398;
}
double f(double a1, double a2, double th) {
double r63399 = th;
double r63400 = cos(r63399);
double r63401 = 2.0;
double r63402 = sqrt(r63401);
double r63403 = sqrt(r63402);
double r63404 = sqrt(r63403);
double r63405 = r63400 / r63404;
double r63406 = 1.0;
double r63407 = r63406 / r63403;
double r63408 = r63407 / r63404;
double r63409 = r63405 * r63408;
double r63410 = a1;
double r63411 = r63410 * r63410;
double r63412 = a2;
double r63413 = r63412 * r63412;
double r63414 = r63411 + r63413;
double r63415 = r63409 * r63414;
return r63415;
}



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 div-inv0.6
Applied times-frac0.5
Final simplification0.5
herbie shell --seed 2019326
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
:precision binary64
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))