\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}{\frac{2}{\left(\log \left(\sqrt{e^{\frac{1}{\sqrt{\mathsf{fma}\left({\left(\frac{2 \cdot \ell}{Om}\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)}}}}\right) + \log \left(\sqrt{e^{\frac{1}{\sqrt{\mathsf{fma}\left({\left(\frac{2 \cdot \ell}{Om}\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)}}}}\right)\right) + 1}}}double f(double l, double Om, double kx, double ky) {
double r57821 = 1.0;
double r57822 = 2.0;
double r57823 = r57821 / r57822;
double r57824 = l;
double r57825 = r57822 * r57824;
double r57826 = Om;
double r57827 = r57825 / r57826;
double r57828 = pow(r57827, r57822);
double r57829 = kx;
double r57830 = sin(r57829);
double r57831 = pow(r57830, r57822);
double r57832 = ky;
double r57833 = sin(r57832);
double r57834 = pow(r57833, r57822);
double r57835 = r57831 + r57834;
double r57836 = r57828 * r57835;
double r57837 = r57821 + r57836;
double r57838 = sqrt(r57837);
double r57839 = r57821 / r57838;
double r57840 = r57821 + r57839;
double r57841 = r57823 * r57840;
double r57842 = sqrt(r57841);
return r57842;
}
double f(double l, double Om, double kx, double ky) {
double r57843 = 1.0;
double r57844 = 2.0;
double r57845 = l;
double r57846 = r57844 * r57845;
double r57847 = Om;
double r57848 = r57846 / r57847;
double r57849 = pow(r57848, r57844);
double r57850 = kx;
double r57851 = sin(r57850);
double r57852 = pow(r57851, r57844);
double r57853 = ky;
double r57854 = sin(r57853);
double r57855 = pow(r57854, r57844);
double r57856 = r57852 + r57855;
double r57857 = fma(r57849, r57856, r57843);
double r57858 = sqrt(r57857);
double r57859 = r57843 / r57858;
double r57860 = exp(r57859);
double r57861 = sqrt(r57860);
double r57862 = log(r57861);
double r57863 = r57862 + r57862;
double r57864 = r57863 + r57843;
double r57865 = r57844 / r57864;
double r57866 = r57843 / r57865;
double r57867 = sqrt(r57866);
return r57867;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Initial program 1.8
Simplified1.8
rmApplied add-log-exp1.8
rmApplied add-sqr-sqrt1.8
Applied log-prod1.8
Final simplification1.8
herbie shell --seed 2019199 +o rules:numerics
(FPCore (l Om kx ky)
:name "Toniolo and Linder, Equation (3a)"
(sqrt (* (/ 1.0 2.0) (+ 1.0 (/ 1.0 (sqrt (+ 1.0 (* (pow (/ (* 2.0 l) Om) 2.0) (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0))))))))))