\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{\mathsf{fma}\left(a1, a1, a2 \cdot a2\right) \cdot \cos th}{\left|\sqrt[3]{\sqrt{2}}\right|} \cdot \frac{\frac{1}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt[3]{\sqrt{2}}}}double f(double a1, double a2, double th) {
double r2036273 = th;
double r2036274 = cos(r2036273);
double r2036275 = 2.0;
double r2036276 = sqrt(r2036275);
double r2036277 = r2036274 / r2036276;
double r2036278 = a1;
double r2036279 = r2036278 * r2036278;
double r2036280 = r2036277 * r2036279;
double r2036281 = a2;
double r2036282 = r2036281 * r2036281;
double r2036283 = r2036277 * r2036282;
double r2036284 = r2036280 + r2036283;
return r2036284;
}
double f(double a1, double a2, double th) {
double r2036285 = a1;
double r2036286 = a2;
double r2036287 = r2036286 * r2036286;
double r2036288 = fma(r2036285, r2036285, r2036287);
double r2036289 = th;
double r2036290 = cos(r2036289);
double r2036291 = r2036288 * r2036290;
double r2036292 = 2.0;
double r2036293 = sqrt(r2036292);
double r2036294 = cbrt(r2036293);
double r2036295 = fabs(r2036294);
double r2036296 = r2036291 / r2036295;
double r2036297 = 1.0;
double r2036298 = sqrt(r2036293);
double r2036299 = r2036297 / r2036298;
double r2036300 = sqrt(r2036294);
double r2036301 = r2036299 / r2036300;
double r2036302 = r2036296 * r2036301;
return r2036302;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Initial program 0.5
Simplified0.8
rmApplied div-inv0.8
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied sqrt-prod0.6
Applied associate-/r*0.5
rmApplied add-cube-cbrt0.5
Applied sqrt-prod0.7
Applied div-inv0.5
Applied times-frac0.4
Applied associate-*r*0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019162 +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))))