\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 \left(\frac{\cos th}{\sqrt{\sqrt{2}}} \cdot \left(a1 \cdot a1 + a2 \cdot a2\right)\right)double f(double a1, double a2, double th) {
double r128655 = th;
double r128656 = cos(r128655);
double r128657 = 2.0;
double r128658 = sqrt(r128657);
double r128659 = r128656 / r128658;
double r128660 = a1;
double r128661 = r128660 * r128660;
double r128662 = r128659 * r128661;
double r128663 = a2;
double r128664 = r128663 * r128663;
double r128665 = r128659 * r128664;
double r128666 = r128662 + r128665;
return r128666;
}
double f(double a1, double a2, double th) {
double r128667 = 1.0;
double r128668 = 2.0;
double r128669 = sqrt(r128668);
double r128670 = sqrt(r128669);
double r128671 = sqrt(r128670);
double r128672 = r128667 / r128671;
double r128673 = r128672 / r128671;
double r128674 = th;
double r128675 = cos(r128674);
double r128676 = r128675 / r128670;
double r128677 = a1;
double r128678 = r128677 * r128677;
double r128679 = a2;
double r128680 = r128679 * r128679;
double r128681 = r128678 + r128680;
double r128682 = r128676 * r128681;
double r128683 = r128673 * r128682;
return r128683;
}



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