\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{\frac{\cos th}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt{2}}} \cdot \left(a1 \cdot a1\right) + \left(\frac{\cos th}{\sqrt{2}} \cdot a2\right) \cdot a2double f(double a1, double a2, double th) {
double r101472 = th;
double r101473 = cos(r101472);
double r101474 = 2.0;
double r101475 = sqrt(r101474);
double r101476 = r101473 / r101475;
double r101477 = a1;
double r101478 = r101477 * r101477;
double r101479 = r101476 * r101478;
double r101480 = a2;
double r101481 = r101480 * r101480;
double r101482 = r101476 * r101481;
double r101483 = r101479 + r101482;
return r101483;
}
double f(double a1, double a2, double th) {
double r101484 = th;
double r101485 = cos(r101484);
double r101486 = 2.0;
double r101487 = sqrt(r101486);
double r101488 = sqrt(r101487);
double r101489 = r101485 / r101488;
double r101490 = r101489 / r101488;
double r101491 = a1;
double r101492 = r101491 * r101491;
double r101493 = r101490 * r101492;
double r101494 = r101485 / r101487;
double r101495 = a2;
double r101496 = r101494 * r101495;
double r101497 = r101496 * r101495;
double r101498 = r101493 + r101497;
return r101498;
}



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 2019354 +o rules:numerics
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
:precision binary64
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))