\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{\frac{\frac{\cos th}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt{\sqrt{2}}}}}{\sqrt{\sqrt{\sqrt{2}}}} \cdot a2\right) \cdot a2double f(double a1, double a2, double th) {
double r48355 = th;
double r48356 = cos(r48355);
double r48357 = 2.0;
double r48358 = sqrt(r48357);
double r48359 = r48356 / r48358;
double r48360 = a1;
double r48361 = r48360 * r48360;
double r48362 = r48359 * r48361;
double r48363 = a2;
double r48364 = r48363 * r48363;
double r48365 = r48359 * r48364;
double r48366 = r48362 + r48365;
return r48366;
}
double f(double a1, double a2, double th) {
double r48367 = th;
double r48368 = cos(r48367);
double r48369 = 2.0;
double r48370 = sqrt(r48369);
double r48371 = sqrt(r48370);
double r48372 = r48368 / r48371;
double r48373 = r48372 / r48371;
double r48374 = a1;
double r48375 = r48374 * r48374;
double r48376 = r48373 * r48375;
double r48377 = sqrt(r48371);
double r48378 = r48372 / r48377;
double r48379 = r48378 / r48377;
double r48380 = a2;
double r48381 = r48379 * r48380;
double r48382 = r48381 * r48380;
double r48383 = r48376 + r48382;
return r48383;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Results
Initial program 0.5
rmApplied add-sqr-sqrt0.5
Applied sqrt-prod0.5
Applied associate-/r*0.5
rmApplied associate-*r*0.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 associate-/r*0.4
Final simplification0.4
herbie shell --seed 2020045 +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))))