\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{\cos th}{\sqrt[3]{\sqrt[3]{\sqrt{2}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt{2}}}} \cdot \left(\frac{\mathsf{hypot}\left(a1, a2\right)}{\sqrt[3]{\sqrt[3]{\sqrt{2}}}} \cdot \frac{\mathsf{hypot}\left(a1, a2\right)}{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}}\right)double f(double a1, double a2, double th) {
double r116160 = th;
double r116161 = cos(r116160);
double r116162 = 2.0;
double r116163 = sqrt(r116162);
double r116164 = r116161 / r116163;
double r116165 = a1;
double r116166 = r116165 * r116165;
double r116167 = r116164 * r116166;
double r116168 = a2;
double r116169 = r116168 * r116168;
double r116170 = r116164 * r116169;
double r116171 = r116167 + r116170;
return r116171;
}
double f(double a1, double a2, double th) {
double r116172 = th;
double r116173 = cos(r116172);
double r116174 = 2.0;
double r116175 = sqrt(r116174);
double r116176 = cbrt(r116175);
double r116177 = cbrt(r116176);
double r116178 = r116177 * r116177;
double r116179 = r116173 / r116178;
double r116180 = a1;
double r116181 = a2;
double r116182 = hypot(r116180, r116181);
double r116183 = r116182 / r116177;
double r116184 = r116176 * r116176;
double r116185 = r116182 / r116184;
double r116186 = r116183 * r116185;
double r116187 = r116179 * r116186;
return r116187;
}



Bits error versus a1



Bits error versus a2



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