\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}{\sqrt{\sqrt{\sqrt{2}}}}}{\frac{\sqrt{\sqrt{2}}}{\frac{\mathsf{fma}\left(a1, a1, a2 \cdot a2\right)}{\sqrt{\sqrt{\sqrt{2}}}}}}double f(double a1, double a2, double th) {
double r300112 = th;
double r300113 = cos(r300112);
double r300114 = 2.0;
double r300115 = sqrt(r300114);
double r300116 = r300113 / r300115;
double r300117 = a1;
double r300118 = r300117 * r300117;
double r300119 = r300116 * r300118;
double r300120 = a2;
double r300121 = r300120 * r300120;
double r300122 = r300116 * r300121;
double r300123 = r300119 + r300122;
return r300123;
}
double f(double a1, double a2, double th) {
double r300124 = th;
double r300125 = cos(r300124);
double r300126 = 2.0;
double r300127 = sqrt(r300126);
double r300128 = sqrt(r300127);
double r300129 = sqrt(r300128);
double r300130 = r300125 / r300129;
double r300131 = a1;
double r300132 = a2;
double r300133 = r300132 * r300132;
double r300134 = fma(r300131, r300131, r300133);
double r300135 = r300134 / r300129;
double r300136 = r300128 / r300135;
double r300137 = r300130 / r300136;
return r300137;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Initial program 0.5
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied sqrt-prod0.5
Applied associate-/r*0.5
rmApplied add-sqr-sqrt0.5
Applied sqrt-prod0.5
Applied sqrt-prod0.5
Applied times-frac0.4
Applied associate-/l*0.6
Final simplification0.6
herbie shell --seed 2020065 +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))))