\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({\left(\frac{2 \cdot \ell}{Om}\right)}^{\left(\frac{2}{2}\right)} \cdot \sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}\right) \cdot \left({\left(\frac{2 \cdot \ell}{Om}\right)}^{\left(\frac{2}{2}\right)} \cdot \sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}\right)}}\right)}double f(double l, double Om, double kx, double ky) {
double r43756 = 1.0;
double r43757 = 2.0;
double r43758 = r43756 / r43757;
double r43759 = l;
double r43760 = r43757 * r43759;
double r43761 = Om;
double r43762 = r43760 / r43761;
double r43763 = pow(r43762, r43757);
double r43764 = kx;
double r43765 = sin(r43764);
double r43766 = pow(r43765, r43757);
double r43767 = ky;
double r43768 = sin(r43767);
double r43769 = pow(r43768, r43757);
double r43770 = r43766 + r43769;
double r43771 = r43763 * r43770;
double r43772 = r43756 + r43771;
double r43773 = sqrt(r43772);
double r43774 = r43756 / r43773;
double r43775 = r43756 + r43774;
double r43776 = r43758 * r43775;
double r43777 = sqrt(r43776);
return r43777;
}
double f(double l, double Om, double kx, double ky) {
double r43778 = 1.0;
double r43779 = 2.0;
double r43780 = r43778 / r43779;
double r43781 = l;
double r43782 = r43779 * r43781;
double r43783 = Om;
double r43784 = r43782 / r43783;
double r43785 = 2.0;
double r43786 = r43779 / r43785;
double r43787 = pow(r43784, r43786);
double r43788 = kx;
double r43789 = sin(r43788);
double r43790 = pow(r43789, r43779);
double r43791 = ky;
double r43792 = sin(r43791);
double r43793 = pow(r43792, r43779);
double r43794 = r43790 + r43793;
double r43795 = sqrt(r43794);
double r43796 = r43787 * r43795;
double r43797 = r43796 * r43796;
double r43798 = r43778 + r43797;
double r43799 = sqrt(r43798);
double r43800 = r43778 / r43799;
double r43801 = r43778 + r43800;
double r43802 = r43780 * r43801;
double r43803 = sqrt(r43802);
return r43803;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Results
Initial program 1.0
rmApplied add-sqr-sqrt1.0
Applied sqr-pow1.0
Applied unswap-sqr0.7
Final simplification0.7
herbie shell --seed 2020100 +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))))))))))