\sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}\right)}\sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{\left(\frac{2}{2}\right)} \cdot \left({\left(\frac{2 \cdot \ell}{Om}\right)}^{\left(\frac{2}{2}\right)} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)\right)}}\right)}double f(double l, double Om, double kx, double ky) {
double r43744 = 1.0;
double r43745 = 2.0;
double r43746 = r43744 / r43745;
double r43747 = l;
double r43748 = r43745 * r43747;
double r43749 = Om;
double r43750 = r43748 / r43749;
double r43751 = pow(r43750, r43745);
double r43752 = kx;
double r43753 = sin(r43752);
double r43754 = pow(r43753, r43745);
double r43755 = ky;
double r43756 = sin(r43755);
double r43757 = pow(r43756, r43745);
double r43758 = r43754 + r43757;
double r43759 = r43751 * r43758;
double r43760 = r43744 + r43759;
double r43761 = sqrt(r43760);
double r43762 = r43744 / r43761;
double r43763 = r43744 + r43762;
double r43764 = r43746 * r43763;
double r43765 = sqrt(r43764);
return r43765;
}
double f(double l, double Om, double kx, double ky) {
double r43766 = 1.0;
double r43767 = 2.0;
double r43768 = r43766 / r43767;
double r43769 = l;
double r43770 = r43767 * r43769;
double r43771 = Om;
double r43772 = r43770 / r43771;
double r43773 = 2.0;
double r43774 = r43767 / r43773;
double r43775 = pow(r43772, r43774);
double r43776 = kx;
double r43777 = sin(r43776);
double r43778 = pow(r43777, r43767);
double r43779 = ky;
double r43780 = sin(r43779);
double r43781 = pow(r43780, r43767);
double r43782 = r43778 + r43781;
double r43783 = r43775 * r43782;
double r43784 = r43775 * r43783;
double r43785 = r43766 + r43784;
double r43786 = sqrt(r43785);
double r43787 = r43766 / r43786;
double r43788 = r43766 + r43787;
double r43789 = r43768 * r43788;
double r43790 = sqrt(r43789);
return r43790;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Results
Initial program 1.0
rmApplied sqr-pow1.0
Applied associate-*l*0.8
Final simplification0.8
herbie shell --seed 2020060 +o rules:numerics
(FPCore (l Om kx ky)
:name "Toniolo and Linder, Equation (3a)"
:precision binary64
(sqrt (* (/ 1 2) (+ 1 (/ 1 (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))