\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{a2 \cdot a2}{\sqrt{2}} \cdot \cos th + \left(a1 \cdot \frac{a1}{\sqrt{2}}\right) \cdot \cos thdouble f(double a1, double a2, double th) {
double r1921996 = th;
double r1921997 = cos(r1921996);
double r1921998 = 2.0;
double r1921999 = sqrt(r1921998);
double r1922000 = r1921997 / r1921999;
double r1922001 = a1;
double r1922002 = r1922001 * r1922001;
double r1922003 = r1922000 * r1922002;
double r1922004 = a2;
double r1922005 = r1922004 * r1922004;
double r1922006 = r1922000 * r1922005;
double r1922007 = r1922003 + r1922006;
return r1922007;
}
double f(double a1, double a2, double th) {
double r1922008 = a2;
double r1922009 = r1922008 * r1922008;
double r1922010 = 2.0;
double r1922011 = sqrt(r1922010);
double r1922012 = r1922009 / r1922011;
double r1922013 = th;
double r1922014 = cos(r1922013);
double r1922015 = r1922012 * r1922014;
double r1922016 = a1;
double r1922017 = r1922016 / r1922011;
double r1922018 = r1922016 * r1922017;
double r1922019 = r1922018 * r1922014;
double r1922020 = r1922015 + r1922019;
return r1922020;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Results
Initial program 0.5
rmApplied div-inv0.5
Applied associate-*l*0.5
Simplified0.5
rmApplied div-inv0.5
Applied associate-*l*0.5
Simplified0.5
rmApplied associate-/r/0.5
Final simplification0.5
herbie shell --seed 2019172 +o rules:numerics
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
(+ (* (/ (cos th) (sqrt 2.0)) (* a1 a1)) (* (/ (cos th) (sqrt 2.0)) (* a2 a2))))