\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{\sqrt{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{\sqrt{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)}}}\right)}double f(double l, double Om, double kx, double ky) {
double r49976 = 1.0;
double r49977 = 2.0;
double r49978 = r49976 / r49977;
double r49979 = l;
double r49980 = r49977 * r49979;
double r49981 = Om;
double r49982 = r49980 / r49981;
double r49983 = pow(r49982, r49977);
double r49984 = kx;
double r49985 = sin(r49984);
double r49986 = pow(r49985, r49977);
double r49987 = ky;
double r49988 = sin(r49987);
double r49989 = pow(r49988, r49977);
double r49990 = r49986 + r49989;
double r49991 = r49983 * r49990;
double r49992 = r49976 + r49991;
double r49993 = sqrt(r49992);
double r49994 = r49976 / r49993;
double r49995 = r49976 + r49994;
double r49996 = r49978 * r49995;
double r49997 = sqrt(r49996);
return r49997;
}
double f(double l, double Om, double kx, double ky) {
double r49998 = 1.0;
double r49999 = 2.0;
double r50000 = r49998 / r49999;
double r50001 = sqrt(r49998);
double r50002 = l;
double r50003 = r49999 * r50002;
double r50004 = Om;
double r50005 = r50003 / r50004;
double r50006 = pow(r50005, r49999);
double r50007 = kx;
double r50008 = sin(r50007);
double r50009 = pow(r50008, r49999);
double r50010 = ky;
double r50011 = sin(r50010);
double r50012 = pow(r50011, r49999);
double r50013 = r50009 + r50012;
double r50014 = r50006 * r50013;
double r50015 = r49998 + r50014;
double r50016 = sqrt(r50015);
double r50017 = cbrt(r50016);
double r50018 = r50017 * r50017;
double r50019 = r50001 / r50018;
double r50020 = r50001 / r50017;
double r50021 = r50019 * r50020;
double r50022 = r49998 + r50021;
double r50023 = r50000 * r50022;
double r50024 = sqrt(r50023);
return r50024;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Results
Initial program 1.7
rmApplied add-cube-cbrt1.7
Applied add-sqr-sqrt1.7
Applied times-frac1.7
Final simplification1.7
herbie shell --seed 2020001 +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))))))))))