\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{1}{\sqrt[3]{\sqrt[3]{\sqrt{2}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt{2}}}} \cdot \frac{\frac{\cos th \cdot \mathsf{fma}\left(a1, a1, a2 \cdot a2\right)}{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}}}{\sqrt[3]{\sqrt[3]{\sqrt{2}}}}double f(double a1, double a2, double th) {
double r130675 = th;
double r130676 = cos(r130675);
double r130677 = 2.0;
double r130678 = sqrt(r130677);
double r130679 = r130676 / r130678;
double r130680 = a1;
double r130681 = r130680 * r130680;
double r130682 = r130679 * r130681;
double r130683 = a2;
double r130684 = r130683 * r130683;
double r130685 = r130679 * r130684;
double r130686 = r130682 + r130685;
return r130686;
}
double f(double a1, double a2, double th) {
double r130687 = 1.0;
double r130688 = 2.0;
double r130689 = sqrt(r130688);
double r130690 = cbrt(r130689);
double r130691 = cbrt(r130690);
double r130692 = r130691 * r130691;
double r130693 = r130687 / r130692;
double r130694 = th;
double r130695 = cos(r130694);
double r130696 = a1;
double r130697 = a2;
double r130698 = r130697 * r130697;
double r130699 = fma(r130696, r130696, r130698);
double r130700 = r130695 * r130699;
double r130701 = r130690 * r130690;
double r130702 = r130700 / r130701;
double r130703 = r130702 / r130691;
double r130704 = r130693 * r130703;
return r130704;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Initial program 0.6
Simplified0.5
rmApplied add-cube-cbrt0.5
Applied associate-/r*0.5
rmApplied add-cube-cbrt0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Final simplification0.5
herbie shell --seed 2020083 +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))))