\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} + \frac{\frac{1}{2}}{\sqrt[3]{\sqrt{\mathsf{fma}\left(4, \frac{\sin kx}{\frac{Om}{\ell}} \cdot \frac{\sin kx}{\frac{Om}{\ell}} + \frac{\ell}{\frac{Om}{\sin ky}} \cdot \frac{\ell}{\frac{Om}{\sin ky}}, 1\right)}} \cdot \left(\sqrt[3]{\sqrt{\mathsf{fma}\left(4, \frac{\sin kx}{\frac{Om}{\ell}} \cdot \frac{\sin kx}{\frac{Om}{\ell}} + \frac{\ell}{\frac{Om}{\sin ky}} \cdot \frac{\ell}{\frac{Om}{\sin ky}}, 1\right)}} \cdot \sqrt[3]{\sqrt{\mathsf{fma}\left(4, \frac{\sin kx}{\frac{Om}{\ell}} \cdot \frac{\sin kx}{\frac{Om}{\ell}} + \frac{\ell}{\frac{Om}{\sin ky}} \cdot \frac{\ell}{\frac{Om}{\sin ky}}, 1\right)}}\right)}}double f(double l, double Om, double kx, double ky) {
double r974969 = 1.0;
double r974970 = 2.0;
double r974971 = r974969 / r974970;
double r974972 = l;
double r974973 = r974970 * r974972;
double r974974 = Om;
double r974975 = r974973 / r974974;
double r974976 = pow(r974975, r974970);
double r974977 = kx;
double r974978 = sin(r974977);
double r974979 = pow(r974978, r974970);
double r974980 = ky;
double r974981 = sin(r974980);
double r974982 = pow(r974981, r974970);
double r974983 = r974979 + r974982;
double r974984 = r974976 * r974983;
double r974985 = r974969 + r974984;
double r974986 = sqrt(r974985);
double r974987 = r974969 / r974986;
double r974988 = r974969 + r974987;
double r974989 = r974971 * r974988;
double r974990 = sqrt(r974989);
return r974990;
}
double f(double l, double Om, double kx, double ky) {
double r974991 = 0.5;
double r974992 = 4.0;
double r974993 = kx;
double r974994 = sin(r974993);
double r974995 = Om;
double r974996 = l;
double r974997 = r974995 / r974996;
double r974998 = r974994 / r974997;
double r974999 = r974998 * r974998;
double r975000 = ky;
double r975001 = sin(r975000);
double r975002 = r974995 / r975001;
double r975003 = r974996 / r975002;
double r975004 = r975003 * r975003;
double r975005 = r974999 + r975004;
double r975006 = 1.0;
double r975007 = fma(r974992, r975005, r975006);
double r975008 = sqrt(r975007);
double r975009 = cbrt(r975008);
double r975010 = r975009 * r975009;
double r975011 = r975009 * r975010;
double r975012 = r974991 / r975011;
double r975013 = r974991 + r975012;
double r975014 = sqrt(r975013);
return r975014;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Initial program 1.8
Simplified1.8
Taylor expanded around -inf 16.8
Simplified0.6
rmApplied add-cube-cbrt0.6
Final simplification0.6
herbie shell --seed 2019142 +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))))))))))