\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}\;\ell \le -5.595436898681083 \cdot 10^{-237}:\\
\;\;\;\;\sqrt{\frac{1}{2} + \left(\sqrt[3]{\frac{\frac{1}{2}}{\sqrt{\left(\sin ky \cdot \sin ky + \left(\left(\sin kx \cdot \sin kx\right)\right)\right) \cdot \left(\frac{\ell + \ell}{Om} \cdot \frac{\ell + \ell}{Om}\right) + 1}}} \cdot \sqrt[3]{\frac{\frac{1}{2}}{\sqrt{\left(\sin ky \cdot \sin ky + \left(\left(\sin kx \cdot \sin kx\right)\right)\right) \cdot \left(\frac{\ell + \ell}{Om} \cdot \frac{\ell + \ell}{Om}\right) + 1}}}\right) \cdot \sqrt[3]{\frac{\frac{1}{2}}{\sqrt{\left(\sin ky \cdot \sin ky + \left(\left(\sin kx \cdot \sin kx\right)\right)\right) \cdot \left(\frac{\ell + \ell}{Om} \cdot \frac{\ell + \ell}{Om}\right) + 1}}}}\\
\mathbf{elif}\;\ell \le 1.6529205245568764 \cdot 10^{+178}:\\
\;\;\;\;\sqrt{\frac{1}{2} + \frac{\frac{1}{2}}{\sqrt[3]{\left(\left(\left(\frac{\ell + \ell}{Om} \cdot \sin kx\right) \cdot \left(\left(\frac{\ell + \ell}{Om} \cdot \sin kx\right)\right) + \left(\frac{\ell + \ell}{Om} \cdot \sin ky\right) \cdot \left(\frac{\ell + \ell}{Om} \cdot \sin ky\right)\right) + 1\right) \cdot \sqrt{1 + \left(\left(\frac{\ell + \ell}{Om} \cdot \sin kx\right) \cdot \left(\frac{\ell + \ell}{Om} \cdot \sin kx\right) + \left(\frac{\ell + \ell}{Om} \cdot \sin ky\right) \cdot \left(\frac{\ell + \ell}{Om} \cdot \sin ky\right)\right)}}}}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{\frac{1}{2}}\\
\end{array}double f(double l, double Om, double kx, double ky) {
double r1730793 = 1.0;
double r1730794 = 2.0;
double r1730795 = r1730793 / r1730794;
double r1730796 = l;
double r1730797 = r1730794 * r1730796;
double r1730798 = Om;
double r1730799 = r1730797 / r1730798;
double r1730800 = pow(r1730799, r1730794);
double r1730801 = kx;
double r1730802 = sin(r1730801);
double r1730803 = pow(r1730802, r1730794);
double r1730804 = ky;
double r1730805 = sin(r1730804);
double r1730806 = pow(r1730805, r1730794);
double r1730807 = r1730803 + r1730806;
double r1730808 = r1730800 * r1730807;
double r1730809 = r1730793 + r1730808;
double r1730810 = sqrt(r1730809);
double r1730811 = r1730793 / r1730810;
double r1730812 = r1730793 + r1730811;
double r1730813 = r1730795 * r1730812;
double r1730814 = sqrt(r1730813);
return r1730814;
}
double f(double l, double Om, double kx, double ky) {
double r1730815 = l;
double r1730816 = -5.595436898681083e-237;
bool r1730817 = r1730815 <= r1730816;
double r1730818 = 0.5;
double r1730819 = ky;
double r1730820 = sin(r1730819);
double r1730821 = r1730820 * r1730820;
double r1730822 = kx;
double r1730823 = sin(r1730822);
double r1730824 = r1730823 * r1730823;
double r1730825 = /* ERROR: no posit support in C */;
double r1730826 = /* ERROR: no posit support in C */;
double r1730827 = r1730821 + r1730826;
double r1730828 = r1730815 + r1730815;
double r1730829 = Om;
double r1730830 = r1730828 / r1730829;
double r1730831 = r1730830 * r1730830;
double r1730832 = r1730827 * r1730831;
double r1730833 = 1.0;
double r1730834 = r1730832 + r1730833;
double r1730835 = sqrt(r1730834);
double r1730836 = r1730818 / r1730835;
double r1730837 = cbrt(r1730836);
double r1730838 = r1730837 * r1730837;
double r1730839 = r1730838 * r1730837;
double r1730840 = r1730818 + r1730839;
double r1730841 = sqrt(r1730840);
double r1730842 = 1.6529205245568764e+178;
bool r1730843 = r1730815 <= r1730842;
double r1730844 = r1730830 * r1730823;
double r1730845 = /* ERROR: no posit support in C */;
double r1730846 = /* ERROR: no posit support in C */;
double r1730847 = r1730844 * r1730846;
double r1730848 = r1730830 * r1730820;
double r1730849 = r1730848 * r1730848;
double r1730850 = r1730847 + r1730849;
double r1730851 = r1730850 + r1730833;
double r1730852 = r1730844 * r1730844;
double r1730853 = r1730852 + r1730849;
double r1730854 = r1730833 + r1730853;
double r1730855 = sqrt(r1730854);
double r1730856 = r1730851 * r1730855;
double r1730857 = cbrt(r1730856);
double r1730858 = r1730818 / r1730857;
double r1730859 = r1730818 + r1730858;
double r1730860 = sqrt(r1730859);
double r1730861 = sqrt(r1730818);
double r1730862 = r1730843 ? r1730860 : r1730861;
double r1730863 = r1730817 ? r1730841 : r1730862;
return r1730863;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
if l < -5.595436898681083e-237Initial program 1.6
Simplified1.6
rmApplied insert-posit162.3
rmApplied add-cube-cbrt2.3
if -5.595436898681083e-237 < l < 1.6529205245568764e+178Initial program 1.1
Simplified1.1
rmApplied add-cbrt-cube1.1
Simplified0.5
rmApplied insert-posit161.8
if 1.6529205245568764e+178 < l Initial program 3.3
Simplified3.3
Taylor expanded around 0 7.6
Final simplification2.6
herbie shell --seed 2019158
(FPCore (l Om kx ky)
:name "Toniolo and Linder, Equation (3a)"
(sqrt (* (/ 1 2) (+ 1 (/ 1 (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))