\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(\sqrt[3]{\frac{2 \cdot \ell}{Om}} \cdot \left(\sqrt[3]{\frac{2}{\sqrt[3]{Om} \cdot \sqrt[3]{Om}}} \cdot \sqrt[3]{\frac{\ell}{\sqrt[3]{Om}}}\right)\right)}^{2} \cdot \left({\left(\sqrt[3]{\frac{2 \cdot \ell}{Om}}\right)}^{2} \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 r55012 = 1.0;
double r55013 = 2.0;
double r55014 = r55012 / r55013;
double r55015 = l;
double r55016 = r55013 * r55015;
double r55017 = Om;
double r55018 = r55016 / r55017;
double r55019 = pow(r55018, r55013);
double r55020 = kx;
double r55021 = sin(r55020);
double r55022 = pow(r55021, r55013);
double r55023 = ky;
double r55024 = sin(r55023);
double r55025 = pow(r55024, r55013);
double r55026 = r55022 + r55025;
double r55027 = r55019 * r55026;
double r55028 = r55012 + r55027;
double r55029 = sqrt(r55028);
double r55030 = r55012 / r55029;
double r55031 = r55012 + r55030;
double r55032 = r55014 * r55031;
double r55033 = sqrt(r55032);
return r55033;
}
double f(double l, double Om, double kx, double ky) {
double r55034 = 1.0;
double r55035 = 2.0;
double r55036 = r55034 / r55035;
double r55037 = l;
double r55038 = r55035 * r55037;
double r55039 = Om;
double r55040 = r55038 / r55039;
double r55041 = cbrt(r55040);
double r55042 = cbrt(r55039);
double r55043 = r55042 * r55042;
double r55044 = r55035 / r55043;
double r55045 = cbrt(r55044);
double r55046 = r55037 / r55042;
double r55047 = cbrt(r55046);
double r55048 = r55045 * r55047;
double r55049 = r55041 * r55048;
double r55050 = pow(r55049, r55035);
double r55051 = pow(r55041, r55035);
double r55052 = kx;
double r55053 = sin(r55052);
double r55054 = pow(r55053, r55035);
double r55055 = ky;
double r55056 = sin(r55055);
double r55057 = pow(r55056, r55035);
double r55058 = r55054 + r55057;
double r55059 = r55051 * r55058;
double r55060 = r55050 * r55059;
double r55061 = r55034 + r55060;
double r55062 = sqrt(r55061);
double r55063 = r55034 / r55062;
double r55064 = r55034 + r55063;
double r55065 = r55036 * r55064;
double r55066 = sqrt(r55065);
return r55066;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Results
Initial program 1.6
rmApplied add-cube-cbrt1.6
Applied unpow-prod-down1.6
Applied associate-*l*1.4
rmApplied add-cube-cbrt1.4
Applied times-frac1.4
Applied cbrt-prod1.4
Final simplification1.4
herbie shell --seed 2019352
(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))))))))))