\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{1}{\sqrt{1}} \cdot \frac{\left(\cos th \cdot \sqrt{a1 \cdot a1 + a2 \cdot a2}\right) \cdot \sqrt{a1 \cdot a1 + a2 \cdot a2}}{\sqrt{2}}double f(double a1, double a2, double th) {
double r67652 = th;
double r67653 = cos(r67652);
double r67654 = 2.0;
double r67655 = sqrt(r67654);
double r67656 = r67653 / r67655;
double r67657 = a1;
double r67658 = r67657 * r67657;
double r67659 = r67656 * r67658;
double r67660 = a2;
double r67661 = r67660 * r67660;
double r67662 = r67656 * r67661;
double r67663 = r67659 + r67662;
return r67663;
}
double f(double a1, double a2, double th) {
double r67664 = 1.0;
double r67665 = sqrt(r67664);
double r67666 = r67664 / r67665;
double r67667 = th;
double r67668 = cos(r67667);
double r67669 = a1;
double r67670 = r67669 * r67669;
double r67671 = a2;
double r67672 = r67671 * r67671;
double r67673 = r67670 + r67672;
double r67674 = sqrt(r67673);
double r67675 = r67668 * r67674;
double r67676 = r67675 * r67674;
double r67677 = 2.0;
double r67678 = sqrt(r67677);
double r67679 = r67676 / r67678;
double r67680 = r67666 * r67679;
return r67680;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Results
Initial program 0.5
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied sqrt-prod0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied associate-*l*0.5
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied associate-*r*0.5
Final simplification0.5
herbie shell --seed 2020045
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
:precision binary64
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))