\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\left(a2 \cdot a2\right) \cdot \frac{1}{\frac{\sqrt{\sqrt{2}}}{\frac{\cos th}{\sqrt{\sqrt{2}}}}} + \left(\frac{\frac{\cos th}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt[3]{\sqrt{2}}}} \cdot \left(a1 \cdot a1\right)\right) \cdot \frac{1}{\sqrt{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}}}double f(double a1, double a2, double th) {
double r2561138 = th;
double r2561139 = cos(r2561138);
double r2561140 = 2.0;
double r2561141 = sqrt(r2561140);
double r2561142 = r2561139 / r2561141;
double r2561143 = a1;
double r2561144 = r2561143 * r2561143;
double r2561145 = r2561142 * r2561144;
double r2561146 = a2;
double r2561147 = r2561146 * r2561146;
double r2561148 = r2561142 * r2561147;
double r2561149 = r2561145 + r2561148;
return r2561149;
}
double f(double a1, double a2, double th) {
double r2561150 = a2;
double r2561151 = r2561150 * r2561150;
double r2561152 = 1.0;
double r2561153 = 2.0;
double r2561154 = sqrt(r2561153);
double r2561155 = sqrt(r2561154);
double r2561156 = th;
double r2561157 = cos(r2561156);
double r2561158 = r2561157 / r2561155;
double r2561159 = r2561155 / r2561158;
double r2561160 = r2561152 / r2561159;
double r2561161 = r2561151 * r2561160;
double r2561162 = cbrt(r2561154);
double r2561163 = sqrt(r2561162);
double r2561164 = r2561158 / r2561163;
double r2561165 = a1;
double r2561166 = r2561165 * r2561165;
double r2561167 = r2561164 * r2561166;
double r2561168 = r2561162 * r2561162;
double r2561169 = sqrt(r2561168);
double r2561170 = r2561152 / r2561169;
double r2561171 = r2561167 * r2561170;
double r2561172 = r2561161 + r2561171;
return r2561172;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Results
Initial program 0.5
rmApplied add-sqr-sqrt0.5
Applied sqrt-prod0.5
Applied associate-/r*0.5
rmApplied add-cube-cbrt0.5
Applied sqrt-prod0.6
Applied *-un-lft-identity0.6
Applied times-frac0.5
Applied associate-*l*0.5
rmApplied add-sqr-sqrt0.5
Applied sqrt-prod0.5
Applied associate-/r*0.4
rmApplied clear-num0.5
Final simplification0.5
herbie shell --seed 2019169 +o rules:numerics
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
(+ (* (/ (cos th) (sqrt 2.0)) (* a1 a1)) (* (/ (cos th) (sqrt 2.0)) (* a2 a2))))