\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 \sqrt{a1 \cdot a1 + a2 \cdot a2}}{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}} \cdot \frac{\sqrt{a1 \cdot a1 + a2 \cdot a2}}{\sqrt[3]{\sqrt{2}}}double f(double a1, double a2, double th) {
double r82563 = th;
double r82564 = cos(r82563);
double r82565 = 2.0;
double r82566 = sqrt(r82565);
double r82567 = r82564 / r82566;
double r82568 = a1;
double r82569 = r82568 * r82568;
double r82570 = r82567 * r82569;
double r82571 = a2;
double r82572 = r82571 * r82571;
double r82573 = r82567 * r82572;
double r82574 = r82570 + r82573;
return r82574;
}
double f(double a1, double a2, double th) {
double r82575 = th;
double r82576 = cos(r82575);
double r82577 = a1;
double r82578 = r82577 * r82577;
double r82579 = a2;
double r82580 = r82579 * r82579;
double r82581 = r82578 + r82580;
double r82582 = sqrt(r82581);
double r82583 = r82576 * r82582;
double r82584 = 2.0;
double r82585 = sqrt(r82584);
double r82586 = cbrt(r82585);
double r82587 = r82586 * r82586;
double r82588 = r82583 / r82587;
double r82589 = r82582 / r82586;
double r82590 = r82588 * r82589;
return r82590;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Results
Initial program 0.5
Simplified0.5
rmApplied associate-*l/0.5
rmApplied add-sqr-sqrt0.5
Applied associate-*r*0.5
rmApplied add-cube-cbrt0.5
Applied times-frac0.5
Final simplification0.5
herbie shell --seed 2019356
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
:precision binary64
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))