\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{\frac{\cos th \cdot \mathsf{fma}\left(a1, a1, a2 \cdot a2\right)}{\sqrt{\sqrt[3]{\sqrt[3]{\sqrt{2}}}}}}{\sqrt[3]{\sqrt[3]{\sqrt{2}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt{2}}}} \cdot \frac{\frac{1}{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}}}{\sqrt{\sqrt[3]{\sqrt[3]{\sqrt{2}}}}}double f(double a1, double a2, double th) {
double r124894 = th;
double r124895 = cos(r124894);
double r124896 = 2.0;
double r124897 = sqrt(r124896);
double r124898 = r124895 / r124897;
double r124899 = a1;
double r124900 = r124899 * r124899;
double r124901 = r124898 * r124900;
double r124902 = a2;
double r124903 = r124902 * r124902;
double r124904 = r124898 * r124903;
double r124905 = r124901 + r124904;
return r124905;
}
double f(double a1, double a2, double th) {
double r124906 = th;
double r124907 = cos(r124906);
double r124908 = a1;
double r124909 = a2;
double r124910 = r124909 * r124909;
double r124911 = fma(r124908, r124908, r124910);
double r124912 = r124907 * r124911;
double r124913 = 2.0;
double r124914 = sqrt(r124913);
double r124915 = cbrt(r124914);
double r124916 = cbrt(r124915);
double r124917 = sqrt(r124916);
double r124918 = r124912 / r124917;
double r124919 = r124916 * r124916;
double r124920 = r124918 / r124919;
double r124921 = 1.0;
double r124922 = r124915 * r124915;
double r124923 = r124921 / r124922;
double r124924 = r124923 / r124917;
double r124925 = r124920 * r124924;
return r124925;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Initial program 0.5
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
rmApplied add-sqr-sqrt0.5
Applied div-inv0.5
Applied times-frac0.5
Applied associate-*r*0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2020062 +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))))