\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)}\begin{array}{l}
\mathbf{if}\;{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2} \le 6.255042022075511028897152922160877393 \cdot 10^{-314}:\\
\;\;\;\;\sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt{1}}\right)}\\
\mathbf{else}:\\
\;\;\;\;\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}}{\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)}\\
\end{array}double f(double l, double Om, double kx, double ky) {
double r55168 = 1.0;
double r55169 = 2.0;
double r55170 = r55168 / r55169;
double r55171 = l;
double r55172 = r55169 * r55171;
double r55173 = Om;
double r55174 = r55172 / r55173;
double r55175 = pow(r55174, r55169);
double r55176 = kx;
double r55177 = sin(r55176);
double r55178 = pow(r55177, r55169);
double r55179 = ky;
double r55180 = sin(r55179);
double r55181 = pow(r55180, r55169);
double r55182 = r55178 + r55181;
double r55183 = r55175 * r55182;
double r55184 = r55168 + r55183;
double r55185 = sqrt(r55184);
double r55186 = r55168 / r55185;
double r55187 = r55168 + r55186;
double r55188 = r55170 * r55187;
double r55189 = sqrt(r55188);
return r55189;
}
double f(double l, double Om, double kx, double ky) {
double r55190 = kx;
double r55191 = sin(r55190);
double r55192 = 2.0;
double r55193 = pow(r55191, r55192);
double r55194 = ky;
double r55195 = sin(r55194);
double r55196 = pow(r55195, r55192);
double r55197 = r55193 + r55196;
double r55198 = 6.2550420220755e-314;
bool r55199 = r55197 <= r55198;
double r55200 = 1.0;
double r55201 = r55200 / r55192;
double r55202 = sqrt(r55200);
double r55203 = r55200 / r55202;
double r55204 = r55200 + r55203;
double r55205 = r55201 * r55204;
double r55206 = sqrt(r55205);
double r55207 = l;
double r55208 = r55192 * r55207;
double r55209 = Om;
double r55210 = r55208 / r55209;
double r55211 = pow(r55210, r55192);
double r55212 = r55211 * r55197;
double r55213 = r55200 + r55212;
double r55214 = sqrt(r55213);
double r55215 = cbrt(r55214);
double r55216 = r55215 * r55215;
double r55217 = r55202 / r55216;
double r55218 = cbrt(r55215);
double r55219 = r55218 * r55218;
double r55220 = r55219 * r55218;
double r55221 = r55202 / r55220;
double r55222 = r55217 * r55221;
double r55223 = r55200 + r55222;
double r55224 = r55201 * r55223;
double r55225 = sqrt(r55224);
double r55226 = r55199 ? r55206 : r55225;
return r55226;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Results
if (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)) < 6.2550420220755e-314Initial program 17.0
Taylor expanded around 0 11.0
if 6.2550420220755e-314 < (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)) Initial program 0.7
rmApplied add-cube-cbrt0.7
Applied add-sqr-sqrt0.7
Applied times-frac0.7
rmApplied add-cube-cbrt0.7
Final simplification1.3
herbie shell --seed 2019347
(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))))))))))