\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{\sqrt[3]{\frac{1}{2}}}{\sqrt[3]{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}}} \cdot \left(\frac{\mathsf{fma}\left(a2, a2, {a1}^{2}\right)}{\sqrt{\sqrt[3]{\sqrt[3]{\sqrt{2}}}}} \cdot \frac{\cos th}{\sqrt{\sqrt[3]{\sqrt[3]{\sqrt{2}}}}}\right)double f(double a1, double a2, double th) {
double r77212 = th;
double r77213 = cos(r77212);
double r77214 = 2.0;
double r77215 = sqrt(r77214);
double r77216 = r77213 / r77215;
double r77217 = a1;
double r77218 = r77217 * r77217;
double r77219 = r77216 * r77218;
double r77220 = a2;
double r77221 = r77220 * r77220;
double r77222 = r77216 * r77221;
double r77223 = r77219 + r77222;
return r77223;
}
double f(double a1, double a2, double th) {
double r77224 = 1.0;
double r77225 = 2.0;
double r77226 = r77224 / r77225;
double r77227 = cbrt(r77226);
double r77228 = sqrt(r77225);
double r77229 = cbrt(r77228);
double r77230 = r77229 * r77229;
double r77231 = cbrt(r77230);
double r77232 = r77227 / r77231;
double r77233 = a2;
double r77234 = a1;
double r77235 = 2.0;
double r77236 = pow(r77234, r77235);
double r77237 = fma(r77233, r77233, r77236);
double r77238 = cbrt(r77229);
double r77239 = sqrt(r77238);
double r77240 = r77237 / r77239;
double r77241 = th;
double r77242 = cos(r77241);
double r77243 = r77242 / r77239;
double r77244 = r77240 * r77243;
double r77245 = r77232 * r77244;
return r77245;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Initial program 0.5
Simplified0.5
rmApplied add-cube-cbrt0.5
Applied associate-/r*0.5
Taylor expanded around inf 0.6
Simplified0.4
rmApplied add-cube-cbrt0.4
Applied cbrt-prod0.9
Applied times-frac0.4
rmApplied add-sqr-sqrt0.4
Applied times-frac0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019326 +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))))