\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{\sqrt{\frac{1}{\sqrt{2}}} \cdot \left(\cos th \cdot \left(a2 \cdot a2\right) + \cos th \cdot \left(a1 \cdot a1\right)\right)}{\sqrt{\sqrt{2}}}double f(double a1, double a2, double th) {
double r102177 = th;
double r102178 = cos(r102177);
double r102179 = 2.0;
double r102180 = sqrt(r102179);
double r102181 = r102178 / r102180;
double r102182 = a1;
double r102183 = r102182 * r102182;
double r102184 = r102181 * r102183;
double r102185 = a2;
double r102186 = r102185 * r102185;
double r102187 = r102181 * r102186;
double r102188 = r102184 + r102187;
return r102188;
}
double f(double a1, double a2, double th) {
double r102189 = 1.0;
double r102190 = 2.0;
double r102191 = sqrt(r102190);
double r102192 = r102189 / r102191;
double r102193 = sqrt(r102192);
double r102194 = th;
double r102195 = cos(r102194);
double r102196 = a2;
double r102197 = r102196 * r102196;
double r102198 = r102195 * r102197;
double r102199 = a1;
double r102200 = r102199 * r102199;
double r102201 = r102195 * r102200;
double r102202 = r102198 + r102201;
double r102203 = r102193 * r102202;
double r102204 = sqrt(r102191);
double r102205 = r102203 / r102204;
return r102205;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Results
Initial program 0.5
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied sqrt-prod0.6
Applied associate-/r*0.5
Taylor expanded around inf 0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020056 +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))))