\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 r57152 = 1.0;
double r57153 = 2.0;
double r57154 = r57152 / r57153;
double r57155 = l;
double r57156 = r57153 * r57155;
double r57157 = Om;
double r57158 = r57156 / r57157;
double r57159 = pow(r57158, r57153);
double r57160 = kx;
double r57161 = sin(r57160);
double r57162 = pow(r57161, r57153);
double r57163 = ky;
double r57164 = sin(r57163);
double r57165 = pow(r57164, r57153);
double r57166 = r57162 + r57165;
double r57167 = r57159 * r57166;
double r57168 = r57152 + r57167;
double r57169 = sqrt(r57168);
double r57170 = r57152 / r57169;
double r57171 = r57152 + r57170;
double r57172 = r57154 * r57171;
double r57173 = sqrt(r57172);
return r57173;
}
double f(double l, double Om, double kx, double ky) {
double r57174 = 1.0;
double r57175 = 2.0;
double r57176 = r57174 / r57175;
double r57177 = l;
double r57178 = r57175 * r57177;
double r57179 = Om;
double r57180 = r57178 / r57179;
double r57181 = pow(r57180, r57175);
double r57182 = kx;
double r57183 = sin(r57182);
double r57184 = pow(r57183, r57175);
double r57185 = ky;
double r57186 = sin(r57185);
double r57187 = pow(r57186, r57175);
double r57188 = r57184 + r57187;
double r57189 = r57181 * r57188;
double r57190 = r57174 + r57189;
double r57191 = sqrt(r57190);
double r57192 = r57174 / r57191;
double r57193 = exp(r57192);
double r57194 = sqrt(r57193);
double r57195 = log(r57194);
double r57196 = r57195 + r57195;
double r57197 = r57174 + r57196;
double r57198 = r57176 * r57197;
double r57199 = sqrt(r57198);
return r57199;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Results
Initial program 1.6
rmApplied add-log-exp1.6
rmApplied add-sqr-sqrt1.6
Applied log-prod1.6
Final simplification1.6
herbie shell --seed 2019306
(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))))))))))