\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\left(a2 \cdot a2\right) \cdot \frac{\cos th}{\sqrt{2}} + \frac{\frac{\left(a1 \cdot a1\right) \cdot \cos th}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt{2}}}double f(double a1, double a2, double th) {
double r1201656 = th;
double r1201657 = cos(r1201656);
double r1201658 = 2.0;
double r1201659 = sqrt(r1201658);
double r1201660 = r1201657 / r1201659;
double r1201661 = a1;
double r1201662 = r1201661 * r1201661;
double r1201663 = r1201660 * r1201662;
double r1201664 = a2;
double r1201665 = r1201664 * r1201664;
double r1201666 = r1201660 * r1201665;
double r1201667 = r1201663 + r1201666;
return r1201667;
}
double f(double a1, double a2, double th) {
double r1201668 = a2;
double r1201669 = r1201668 * r1201668;
double r1201670 = th;
double r1201671 = cos(r1201670);
double r1201672 = 2.0;
double r1201673 = sqrt(r1201672);
double r1201674 = r1201671 / r1201673;
double r1201675 = r1201669 * r1201674;
double r1201676 = a1;
double r1201677 = r1201676 * r1201676;
double r1201678 = r1201677 * r1201671;
double r1201679 = sqrt(r1201673);
double r1201680 = r1201678 / r1201679;
double r1201681 = r1201680 / r1201679;
double r1201682 = r1201675 + r1201681;
return r1201682;
}



Bits error versus a1



Bits error versus a2



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