\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{\mathsf{hypot}\left(a1, a2\right) \cdot \cos th}{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}} \cdot \frac{\mathsf{hypot}\left(a1, a2\right)}{\sqrt[3]{\sqrt{2}}}double f(double a1, double a2, double th) {
double r93458 = th;
double r93459 = cos(r93458);
double r93460 = 2.0;
double r93461 = sqrt(r93460);
double r93462 = r93459 / r93461;
double r93463 = a1;
double r93464 = r93463 * r93463;
double r93465 = r93462 * r93464;
double r93466 = a2;
double r93467 = r93466 * r93466;
double r93468 = r93462 * r93467;
double r93469 = r93465 + r93468;
return r93469;
}
double f(double a1, double a2, double th) {
double r93470 = a1;
double r93471 = a2;
double r93472 = hypot(r93470, r93471);
double r93473 = th;
double r93474 = cos(r93473);
double r93475 = r93472 * r93474;
double r93476 = 2.0;
double r93477 = sqrt(r93476);
double r93478 = cbrt(r93477);
double r93479 = r93478 * r93478;
double r93480 = r93475 / r93479;
double r93481 = r93472 / r93478;
double r93482 = r93480 * r93481;
return r93482;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Results
Initial program 0.5
Simplified0.5
rmApplied add-cube-cbrt0.5
Applied add-sqr-sqrt0.5
Applied times-frac0.5
Applied associate-*r*0.5
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied associate-*l*0.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2019194 +o rules:numerics
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
(+ (* (/ (cos th) (sqrt 2.0)) (* a1 a1)) (* (/ (cos th) (sqrt 2.0)) (* a2 a2))))