\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 \cdot \sqrt{a1 \cdot a1 + a2 \cdot a2}}{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}} \cdot \frac{\sqrt{a1 \cdot a1 + a2 \cdot a2}}{\sqrt[3]{\sqrt{2}}}double f(double a1, double a2, double th) {
double r71145 = th;
double r71146 = cos(r71145);
double r71147 = 2.0;
double r71148 = sqrt(r71147);
double r71149 = r71146 / r71148;
double r71150 = a1;
double r71151 = r71150 * r71150;
double r71152 = r71149 * r71151;
double r71153 = a2;
double r71154 = r71153 * r71153;
double r71155 = r71149 * r71154;
double r71156 = r71152 + r71155;
return r71156;
}
double f(double a1, double a2, double th) {
double r71157 = th;
double r71158 = cos(r71157);
double r71159 = a1;
double r71160 = r71159 * r71159;
double r71161 = a2;
double r71162 = r71161 * r71161;
double r71163 = r71160 + r71162;
double r71164 = sqrt(r71163);
double r71165 = r71158 * r71164;
double r71166 = 2.0;
double r71167 = sqrt(r71166);
double r71168 = cbrt(r71167);
double r71169 = r71168 * r71168;
double r71170 = r71165 / r71169;
double r71171 = r71164 / r71168;
double r71172 = r71170 * r71171;
return r71172;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Results
Initial program 0.5
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied associate-*l*0.5
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied associate-*r*0.5
rmApplied add-cube-cbrt0.5
Applied times-frac0.5
Final simplification0.5
herbie shell --seed 2019325
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
:precision binary64
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))