\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 r42781 = 1.0;
double r42782 = 2.0;
double r42783 = r42781 / r42782;
double r42784 = l;
double r42785 = r42782 * r42784;
double r42786 = Om;
double r42787 = r42785 / r42786;
double r42788 = pow(r42787, r42782);
double r42789 = kx;
double r42790 = sin(r42789);
double r42791 = pow(r42790, r42782);
double r42792 = ky;
double r42793 = sin(r42792);
double r42794 = pow(r42793, r42782);
double r42795 = r42791 + r42794;
double r42796 = r42788 * r42795;
double r42797 = r42781 + r42796;
double r42798 = sqrt(r42797);
double r42799 = r42781 / r42798;
double r42800 = r42781 + r42799;
double r42801 = r42783 * r42800;
double r42802 = sqrt(r42801);
return r42802;
}
double f(double l, double Om, double kx, double ky) {
double r42803 = 1.0;
double r42804 = 2.0;
double r42805 = r42803 / r42804;
double r42806 = l;
double r42807 = r42804 * r42806;
double r42808 = Om;
double r42809 = r42807 / r42808;
double r42810 = 2.0;
double r42811 = r42804 / r42810;
double r42812 = pow(r42809, r42811);
double r42813 = kx;
double r42814 = sin(r42813);
double r42815 = pow(r42814, r42804);
double r42816 = ky;
double r42817 = sin(r42816);
double r42818 = pow(r42817, r42804);
double r42819 = r42815 + r42818;
double r42820 = r42812 * r42819;
double r42821 = r42812 * r42820;
double r42822 = r42803 + r42821;
double r42823 = sqrt(r42822);
double r42824 = r42803 / r42823;
double r42825 = r42803 + r42824;
double r42826 = r42805 * r42825;
double r42827 = sqrt(r42826);
return r42827;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Results
Initial program 1.6
rmApplied sqr-pow1.6
Applied associate-*l*1.4
Final simplification1.4
herbie shell --seed 2019353 +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))))))))))