\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]{\left|\sqrt[3]{2}\right|}} \cdot \frac{\mathsf{fma}\left(a1, a1, a2 \cdot a2\right) \cdot \cos th}{\sqrt[3]{\sqrt{\sqrt[3]{2}}}}double f(double a1, double a2, double th) {
double r65168 = th;
double r65169 = cos(r65168);
double r65170 = 2.0;
double r65171 = sqrt(r65170);
double r65172 = r65169 / r65171;
double r65173 = a1;
double r65174 = r65173 * r65173;
double r65175 = r65172 * r65174;
double r65176 = a2;
double r65177 = r65176 * r65176;
double r65178 = r65172 * r65177;
double r65179 = r65175 + r65178;
return r65179;
}
double f(double a1, double a2, double th) {
double r65180 = 1.0;
double r65181 = 2.0;
double r65182 = r65180 / r65181;
double r65183 = cbrt(r65182);
double r65184 = cbrt(r65181);
double r65185 = fabs(r65184);
double r65186 = cbrt(r65185);
double r65187 = r65183 / r65186;
double r65188 = a1;
double r65189 = a2;
double r65190 = r65189 * r65189;
double r65191 = fma(r65188, r65188, r65190);
double r65192 = th;
double r65193 = cos(r65192);
double r65194 = r65191 * r65193;
double r65195 = sqrt(r65184);
double r65196 = cbrt(r65195);
double r65197 = r65194 / r65196;
double r65198 = r65187 * r65197;
return r65198;
}



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 sqrt-prod0.4
Applied cbrt-prod0.9
Applied times-frac0.4
Simplified0.4
Final simplification0.4
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))))