\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}{\sqrt[3]{\sqrt{2}}} \cdot \frac{\mathsf{fma}\left(a1, a1, a2 \cdot a2\right)}{\sqrt[3]{\sqrt{2}}}}{\sqrt[3]{\sqrt[3]{\sqrt{2}}}}double f(double a1, double a2, double th) {
double r149937 = th;
double r149938 = cos(r149937);
double r149939 = 2.0;
double r149940 = sqrt(r149939);
double r149941 = r149938 / r149940;
double r149942 = a1;
double r149943 = r149942 * r149942;
double r149944 = r149941 * r149943;
double r149945 = a2;
double r149946 = r149945 * r149945;
double r149947 = r149941 * r149946;
double r149948 = r149944 + r149947;
return r149948;
}
double f(double a1, double a2, double th) {
double r149949 = 1.0;
double r149950 = 2.0;
double r149951 = sqrt(r149950);
double r149952 = cbrt(r149951);
double r149953 = cbrt(r149952);
double r149954 = r149953 * r149953;
double r149955 = r149949 / r149954;
double r149956 = th;
double r149957 = cos(r149956);
double r149958 = r149957 / r149952;
double r149959 = a1;
double r149960 = a2;
double r149961 = r149960 * r149960;
double r149962 = fma(r149959, r149959, r149961);
double r149963 = r149962 / r149952;
double r149964 = r149958 * r149963;
double r149965 = r149964 / r149953;
double r149966 = r149955 * r149965;
return r149966;
}



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 times-frac0.5
Final simplification0.5
herbie shell --seed 2019347 +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))))