\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(\frac{2 \cdot \ell}{Om}\right)}^{\left(\frac{2}{2}\right)} \cdot \mathsf{log1p}\left(\mathsf{expm1}\left({\left(\frac{2 \cdot \ell}{Om}\right)}^{\left(\frac{2}{2}\right)} \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 r64176 = 1.0;
double r64177 = 2.0;
double r64178 = r64176 / r64177;
double r64179 = l;
double r64180 = r64177 * r64179;
double r64181 = Om;
double r64182 = r64180 / r64181;
double r64183 = pow(r64182, r64177);
double r64184 = kx;
double r64185 = sin(r64184);
double r64186 = pow(r64185, r64177);
double r64187 = ky;
double r64188 = sin(r64187);
double r64189 = pow(r64188, r64177);
double r64190 = r64186 + r64189;
double r64191 = r64183 * r64190;
double r64192 = r64176 + r64191;
double r64193 = sqrt(r64192);
double r64194 = r64176 / r64193;
double r64195 = r64176 + r64194;
double r64196 = r64178 * r64195;
double r64197 = sqrt(r64196);
return r64197;
}
double f(double l, double Om, double kx, double ky) {
double r64198 = 1.0;
double r64199 = 2.0;
double r64200 = r64198 / r64199;
double r64201 = l;
double r64202 = r64199 * r64201;
double r64203 = Om;
double r64204 = r64202 / r64203;
double r64205 = 2.0;
double r64206 = r64199 / r64205;
double r64207 = pow(r64204, r64206);
double r64208 = kx;
double r64209 = sin(r64208);
double r64210 = pow(r64209, r64199);
double r64211 = ky;
double r64212 = sin(r64211);
double r64213 = pow(r64212, r64199);
double r64214 = r64210 + r64213;
double r64215 = r64207 * r64214;
double r64216 = expm1(r64215);
double r64217 = log1p(r64216);
double r64218 = r64207 * r64217;
double r64219 = r64198 + r64218;
double r64220 = sqrt(r64219);
double r64221 = r64198 / r64220;
double r64222 = r64198 + r64221;
double r64223 = r64200 * r64222;
double r64224 = sqrt(r64223);
return r64224;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Results
Initial program 1.7
rmApplied sqr-pow1.7
Applied associate-*l*1.5
rmApplied log1p-expm1-u1.5
Final simplification1.5
herbie shell --seed 2020056 +o rules:numerics
(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))))))))))