\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 r104228 = th;
double r104229 = cos(r104228);
double r104230 = 2.0;
double r104231 = sqrt(r104230);
double r104232 = r104229 / r104231;
double r104233 = a1;
double r104234 = r104233 * r104233;
double r104235 = r104232 * r104234;
double r104236 = a2;
double r104237 = r104236 * r104236;
double r104238 = r104232 * r104237;
double r104239 = r104235 + r104238;
return r104239;
}
double f(double a1, double a2, double th) {
double r104240 = 1.0;
double r104241 = 2.0;
double r104242 = sqrt(r104241);
double r104243 = sqrt(r104242);
double r104244 = sqrt(r104243);
double r104245 = r104240 / r104244;
double r104246 = r104245 / r104244;
double r104247 = th;
double r104248 = cos(r104247);
double r104249 = r104248 / r104243;
double r104250 = a1;
double r104251 = r104250 * r104250;
double r104252 = a2;
double r104253 = r104252 * r104252;
double r104254 = r104251 + r104253;
double r104255 = r104249 * r104254;
double r104256 = r104246 * r104255;
return r104256;
}



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