\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{a2 \cdot a2}{\frac{\sqrt{2}}{\cos th}} + \cos th \cdot \left(\frac{\frac{1}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt{2}}} \cdot \left(a1 \cdot a1\right)\right)double f(double a1, double a2, double th) {
double r1566684 = th;
double r1566685 = cos(r1566684);
double r1566686 = 2.0;
double r1566687 = sqrt(r1566686);
double r1566688 = r1566685 / r1566687;
double r1566689 = a1;
double r1566690 = r1566689 * r1566689;
double r1566691 = r1566688 * r1566690;
double r1566692 = a2;
double r1566693 = r1566692 * r1566692;
double r1566694 = r1566688 * r1566693;
double r1566695 = r1566691 + r1566694;
return r1566695;
}
double f(double a1, double a2, double th) {
double r1566696 = a2;
double r1566697 = r1566696 * r1566696;
double r1566698 = 2.0;
double r1566699 = sqrt(r1566698);
double r1566700 = th;
double r1566701 = cos(r1566700);
double r1566702 = r1566699 / r1566701;
double r1566703 = r1566697 / r1566702;
double r1566704 = 1.0;
double r1566705 = sqrt(r1566699);
double r1566706 = r1566704 / r1566705;
double r1566707 = r1566706 / r1566705;
double r1566708 = a1;
double r1566709 = r1566708 * r1566708;
double r1566710 = r1566707 * r1566709;
double r1566711 = r1566701 * r1566710;
double r1566712 = r1566703 + r1566711;
return r1566712;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Results
Initial program 0.5
Taylor expanded around inf 0.5
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied sqrt-prod0.5
Applied associate-/r*0.5
rmApplied *-un-lft-identity0.5
Applied div-inv0.5
Applied times-frac0.5
Applied associate-*l*0.5
Final simplification0.5
herbie shell --seed 2019132 +o rules:numerics
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))