\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\left(\frac{\frac{1}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt[3]{\sqrt{2}}}} \cdot \frac{\cos th}{\left|\sqrt[3]{\sqrt{2}}\right|}\right) \cdot \left(a1 \cdot a1\right) + \frac{\frac{\cos th}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt{2}}} \cdot \left(a2 \cdot a2\right)double f(double a1, double a2, double th) {
double r6770357 = th;
double r6770358 = cos(r6770357);
double r6770359 = 2.0;
double r6770360 = sqrt(r6770359);
double r6770361 = r6770358 / r6770360;
double r6770362 = a1;
double r6770363 = r6770362 * r6770362;
double r6770364 = r6770361 * r6770363;
double r6770365 = a2;
double r6770366 = r6770365 * r6770365;
double r6770367 = r6770361 * r6770366;
double r6770368 = r6770364 + r6770367;
return r6770368;
}
double f(double a1, double a2, double th) {
double r6770369 = 1.0;
double r6770370 = 2.0;
double r6770371 = sqrt(r6770370);
double r6770372 = sqrt(r6770371);
double r6770373 = r6770369 / r6770372;
double r6770374 = cbrt(r6770371);
double r6770375 = sqrt(r6770374);
double r6770376 = r6770373 / r6770375;
double r6770377 = th;
double r6770378 = cos(r6770377);
double r6770379 = fabs(r6770374);
double r6770380 = r6770378 / r6770379;
double r6770381 = r6770376 * r6770380;
double r6770382 = a1;
double r6770383 = r6770382 * r6770382;
double r6770384 = r6770381 * r6770383;
double r6770385 = r6770378 / r6770372;
double r6770386 = r6770385 / r6770372;
double r6770387 = a2;
double r6770388 = r6770387 * r6770387;
double r6770389 = r6770386 * r6770388;
double r6770390 = r6770384 + r6770389;
return r6770390;
}



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 add-cube-cbrt0.5
Applied sqrt-prod0.6
Applied div-inv0.5
Applied times-frac0.5
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied sqrt-prod0.5
Applied associate-/r*0.5
Final simplification0.5
herbie shell --seed 2019124 +o rules:numerics
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))