\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{\frac{1}{2}}{\sqrt{\mathsf{fma}\left(\frac{\ell}{\frac{Om}{2}} \cdot \frac{\ell}{\frac{Om}{2}}, \mathsf{fma}\left(\sin ky, \sin ky, \sin kx \cdot \sin kx\right), 1\right)}} + \frac{1}{2}}double f(double l, double Om, double kx, double ky) {
double r1221948 = 1.0;
double r1221949 = 2.0;
double r1221950 = r1221948 / r1221949;
double r1221951 = l;
double r1221952 = r1221949 * r1221951;
double r1221953 = Om;
double r1221954 = r1221952 / r1221953;
double r1221955 = pow(r1221954, r1221949);
double r1221956 = kx;
double r1221957 = sin(r1221956);
double r1221958 = pow(r1221957, r1221949);
double r1221959 = ky;
double r1221960 = sin(r1221959);
double r1221961 = pow(r1221960, r1221949);
double r1221962 = r1221958 + r1221961;
double r1221963 = r1221955 * r1221962;
double r1221964 = r1221948 + r1221963;
double r1221965 = sqrt(r1221964);
double r1221966 = r1221948 / r1221965;
double r1221967 = r1221948 + r1221966;
double r1221968 = r1221950 * r1221967;
double r1221969 = sqrt(r1221968);
return r1221969;
}
double f(double l, double Om, double kx, double ky) {
double r1221970 = 0.5;
double r1221971 = l;
double r1221972 = Om;
double r1221973 = 2.0;
double r1221974 = r1221972 / r1221973;
double r1221975 = r1221971 / r1221974;
double r1221976 = r1221975 * r1221975;
double r1221977 = ky;
double r1221978 = sin(r1221977);
double r1221979 = kx;
double r1221980 = sin(r1221979);
double r1221981 = r1221980 * r1221980;
double r1221982 = fma(r1221978, r1221978, r1221981);
double r1221983 = 1.0;
double r1221984 = fma(r1221976, r1221982, r1221983);
double r1221985 = sqrt(r1221984);
double r1221986 = r1221970 / r1221985;
double r1221987 = r1221986 + r1221970;
double r1221988 = sqrt(r1221987);
return r1221988;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Initial program 1.5
Simplified1.5
Final simplification1.5
herbie shell --seed 2019143 +o rules:numerics
(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))))))))))