\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{\frac{\mathsf{fma}\left(a1, a1, a2 \cdot a2\right) \cdot \cos th}{\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 r103002 = th;
double r103003 = cos(r103002);
double r103004 = 2.0;
double r103005 = sqrt(r103004);
double r103006 = r103003 / r103005;
double r103007 = a1;
double r103008 = r103007 * r103007;
double r103009 = r103006 * r103008;
double r103010 = a2;
double r103011 = r103010 * r103010;
double r103012 = r103006 * r103011;
double r103013 = r103009 + r103012;
return r103013;
}
double f(double a1, double a2, double th) {
double r103014 = a1;
double r103015 = a2;
double r103016 = r103015 * r103015;
double r103017 = fma(r103014, r103014, r103016);
double r103018 = th;
double r103019 = cos(r103018);
double r103020 = r103017 * r103019;
double r103021 = 2.0;
double r103022 = sqrt(r103021);
double r103023 = cbrt(r103022);
double r103024 = cbrt(r103023);
double r103025 = sqrt(r103024);
double r103026 = r103020 / r103025;
double r103027 = r103024 * r103024;
double r103028 = r103026 / r103027;
double r103029 = 1.0;
double r103030 = r103023 * r103023;
double r103031 = r103029 / r103030;
double r103032 = r103031 / r103025;
double r103033 = r103028 * r103032;
return r103033;
}



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 2019350 +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))))