\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 + \left(\log \left(\sqrt{e^{\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) + \log \left(\sqrt{e^{\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)\right)\right)}double f(double l, double Om, double kx, double ky) {
double r58986 = 1.0;
double r58987 = 2.0;
double r58988 = r58986 / r58987;
double r58989 = l;
double r58990 = r58987 * r58989;
double r58991 = Om;
double r58992 = r58990 / r58991;
double r58993 = pow(r58992, r58987);
double r58994 = kx;
double r58995 = sin(r58994);
double r58996 = pow(r58995, r58987);
double r58997 = ky;
double r58998 = sin(r58997);
double r58999 = pow(r58998, r58987);
double r59000 = r58996 + r58999;
double r59001 = r58993 * r59000;
double r59002 = r58986 + r59001;
double r59003 = sqrt(r59002);
double r59004 = r58986 / r59003;
double r59005 = r58986 + r59004;
double r59006 = r58988 * r59005;
double r59007 = sqrt(r59006);
return r59007;
}
double f(double l, double Om, double kx, double ky) {
double r59008 = 1.0;
double r59009 = 2.0;
double r59010 = r59008 / r59009;
double r59011 = l;
double r59012 = r59009 * r59011;
double r59013 = Om;
double r59014 = r59012 / r59013;
double r59015 = pow(r59014, r59009);
double r59016 = kx;
double r59017 = sin(r59016);
double r59018 = pow(r59017, r59009);
double r59019 = ky;
double r59020 = sin(r59019);
double r59021 = pow(r59020, r59009);
double r59022 = r59018 + r59021;
double r59023 = r59015 * r59022;
double r59024 = r59008 + r59023;
double r59025 = sqrt(r59024);
double r59026 = r59008 / r59025;
double r59027 = exp(r59026);
double r59028 = sqrt(r59027);
double r59029 = log(r59028);
double r59030 = r59029 + r59029;
double r59031 = r59008 + r59030;
double r59032 = r59010 * r59031;
double r59033 = sqrt(r59032);
return r59033;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Results
Initial program 1.8
rmApplied add-log-exp1.8
rmApplied add-sqr-sqrt1.8
Applied log-prod1.8
Final simplification1.8
herbie shell --seed 2019199
(FPCore (l Om kx ky)
:name "Toniolo and Linder, Equation (3a)"
(sqrt (* (/ 1.0 2.0) (+ 1.0 (/ 1.0 (sqrt (+ 1.0 (* (pow (/ (* 2.0 l) Om) 2.0) (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0))))))))))