\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{1}{\frac{\sqrt{\sqrt{\sqrt{2}}}}{\cos th}} \cdot \frac{a2 \cdot a2 + a1 \cdot a1}{\sqrt{\sqrt{\sqrt{2}}} \cdot \sqrt{\sqrt{2}}}double f(double a1, double a2, double th) {
double r91335 = th;
double r91336 = cos(r91335);
double r91337 = 2.0;
double r91338 = sqrt(r91337);
double r91339 = r91336 / r91338;
double r91340 = a1;
double r91341 = r91340 * r91340;
double r91342 = r91339 * r91341;
double r91343 = a2;
double r91344 = r91343 * r91343;
double r91345 = r91339 * r91344;
double r91346 = r91342 + r91345;
return r91346;
}
double f(double a1, double a2, double th) {
double r91347 = 1.0;
double r91348 = 2.0;
double r91349 = sqrt(r91348);
double r91350 = sqrt(r91349);
double r91351 = sqrt(r91350);
double r91352 = th;
double r91353 = cos(r91352);
double r91354 = r91351 / r91353;
double r91355 = r91347 / r91354;
double r91356 = a2;
double r91357 = r91356 * r91356;
double r91358 = a1;
double r91359 = r91358 * r91358;
double r91360 = r91357 + r91359;
double r91361 = r91351 * r91350;
double r91362 = r91360 / r91361;
double r91363 = r91355 * r91362;
return r91363;
}



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 div-inv0.6
Applied times-frac0.5
Applied associate-*l*0.5
Simplified0.4
rmApplied clear-num0.4
Final simplification0.4
herbie shell --seed 2019304
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
:precision binary64
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))