\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 \mathsf{hypot}\left(a1, a2\right)}{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}} \cdot \frac{\mathsf{hypot}\left(a1, a2\right)}{\sqrt[3]{\sqrt{2}}}double f(double a1, double a2, double th) {
double r103373 = th;
double r103374 = cos(r103373);
double r103375 = 2.0;
double r103376 = sqrt(r103375);
double r103377 = r103374 / r103376;
double r103378 = a1;
double r103379 = r103378 * r103378;
double r103380 = r103377 * r103379;
double r103381 = a2;
double r103382 = r103381 * r103381;
double r103383 = r103377 * r103382;
double r103384 = r103380 + r103383;
return r103384;
}
double f(double a1, double a2, double th) {
double r103385 = th;
double r103386 = cos(r103385);
double r103387 = a1;
double r103388 = a2;
double r103389 = hypot(r103387, r103388);
double r103390 = r103386 * r103389;
double r103391 = 2.0;
double r103392 = sqrt(r103391);
double r103393 = cbrt(r103392);
double r103394 = r103393 * r103393;
double r103395 = r103390 / r103394;
double r103396 = r103389 / r103393;
double r103397 = r103395 * r103396;
return r103397;
}



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 associate-*r*0.5
Simplified0.5
rmApplied add-cube-cbrt0.5
Applied times-frac0.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2019353 +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))))