\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)}\begin{array}{l}
\mathbf{if}\;{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2} \le 6.255042022075511028897152922160877393 \cdot 10^{-314}:\\
\;\;\;\;\sqrt{\left(1 + \frac{1}{\sqrt{1}}\right) \cdot \frac{1}{2}}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt[3]{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}} \cdot \sqrt[3]{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}} \cdot \frac{1}{\left(\sqrt[3]{\sqrt[3]{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}}\right) \cdot \sqrt[3]{\sqrt[3]{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}}}\right)}\\
\end{array}double f(double l, double Om, double kx, double ky) {
double r45815 = 1.0;
double r45816 = 2.0;
double r45817 = r45815 / r45816;
double r45818 = l;
double r45819 = r45816 * r45818;
double r45820 = Om;
double r45821 = r45819 / r45820;
double r45822 = pow(r45821, r45816);
double r45823 = kx;
double r45824 = sin(r45823);
double r45825 = pow(r45824, r45816);
double r45826 = ky;
double r45827 = sin(r45826);
double r45828 = pow(r45827, r45816);
double r45829 = r45825 + r45828;
double r45830 = r45822 * r45829;
double r45831 = r45815 + r45830;
double r45832 = sqrt(r45831);
double r45833 = r45815 / r45832;
double r45834 = r45815 + r45833;
double r45835 = r45817 * r45834;
double r45836 = sqrt(r45835);
return r45836;
}
double f(double l, double Om, double kx, double ky) {
double r45837 = kx;
double r45838 = sin(r45837);
double r45839 = 2.0;
double r45840 = pow(r45838, r45839);
double r45841 = ky;
double r45842 = sin(r45841);
double r45843 = pow(r45842, r45839);
double r45844 = r45840 + r45843;
double r45845 = 6.2550420220755e-314;
bool r45846 = r45844 <= r45845;
double r45847 = 1.0;
double r45848 = sqrt(r45847);
double r45849 = r45847 / r45848;
double r45850 = r45847 + r45849;
double r45851 = r45847 / r45839;
double r45852 = r45850 * r45851;
double r45853 = sqrt(r45852);
double r45854 = 1.0;
double r45855 = l;
double r45856 = r45839 * r45855;
double r45857 = Om;
double r45858 = r45856 / r45857;
double r45859 = pow(r45858, r45839);
double r45860 = r45859 * r45844;
double r45861 = r45847 + r45860;
double r45862 = sqrt(r45861);
double r45863 = cbrt(r45862);
double r45864 = r45863 * r45863;
double r45865 = r45854 / r45864;
double r45866 = cbrt(r45863);
double r45867 = r45866 * r45866;
double r45868 = r45867 * r45866;
double r45869 = r45847 / r45868;
double r45870 = r45865 * r45869;
double r45871 = r45847 + r45870;
double r45872 = r45851 * r45871;
double r45873 = sqrt(r45872);
double r45874 = r45846 ? r45853 : r45873;
return r45874;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Results
if (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)) < 6.2550420220755e-314Initial program 17.0
Taylor expanded around 0 11.0
if 6.2550420220755e-314 < (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)) Initial program 0.7
rmApplied add-cube-cbrt0.7
Applied *-un-lft-identity0.7
Applied times-frac0.7
rmApplied add-cube-cbrt0.7
Final simplification1.3
herbie shell --seed 2019347
(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))))))))))