\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[3]{{\left(\left(\sqrt[3]{\sqrt[3]{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]{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[3]{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}\right) \cdot \left(\left(\sqrt[3]{\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[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) \cdot \sqrt[3]{\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)\right)}^{3}}}\right)}double f(double l, double Om, double kx, double ky) {
double r56976 = 1.0;
double r56977 = 2.0;
double r56978 = r56976 / r56977;
double r56979 = l;
double r56980 = r56977 * r56979;
double r56981 = Om;
double r56982 = r56980 / r56981;
double r56983 = pow(r56982, r56977);
double r56984 = kx;
double r56985 = sin(r56984);
double r56986 = pow(r56985, r56977);
double r56987 = ky;
double r56988 = sin(r56987);
double r56989 = pow(r56988, r56977);
double r56990 = r56986 + r56989;
double r56991 = r56983 * r56990;
double r56992 = r56976 + r56991;
double r56993 = sqrt(r56992);
double r56994 = r56976 / r56993;
double r56995 = r56976 + r56994;
double r56996 = r56978 * r56995;
double r56997 = sqrt(r56996);
return r56997;
}
double f(double l, double Om, double kx, double ky) {
double r56998 = 1.0;
double r56999 = 2.0;
double r57000 = r56998 / r56999;
double r57001 = l;
double r57002 = r56999 * r57001;
double r57003 = Om;
double r57004 = r57002 / r57003;
double r57005 = pow(r57004, r56999);
double r57006 = kx;
double r57007 = sin(r57006);
double r57008 = pow(r57007, r56999);
double r57009 = ky;
double r57010 = sin(r57009);
double r57011 = pow(r57010, r56999);
double r57012 = r57008 + r57011;
double r57013 = r57005 * r57012;
double r57014 = r56998 + r57013;
double r57015 = cbrt(r57014);
double r57016 = r57015 * r57015;
double r57017 = cbrt(r57016);
double r57018 = cbrt(r57015);
double r57019 = r57017 * r57018;
double r57020 = sqrt(r57014);
double r57021 = cbrt(r57020);
double r57022 = cbrt(r57021);
double r57023 = r57022 * r57022;
double r57024 = r57023 * r57022;
double r57025 = r57019 * r57024;
double r57026 = 3.0;
double r57027 = pow(r57025, r57026);
double r57028 = cbrt(r57027);
double r57029 = r56998 / r57028;
double r57030 = r56998 + r57029;
double r57031 = r57000 * r57030;
double r57032 = sqrt(r57031);
return r57032;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Results
Initial program 1.5
rmApplied add-cbrt-cube1.5
Simplified1.5
rmApplied add-cube-cbrt1.5
Simplified1.5
rmApplied add-cube-cbrt1.5
rmApplied add-cube-cbrt1.5
Applied cbrt-prod1.5
Final simplification1.5
herbie shell --seed 2019354
(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))))))))))