\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 \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)}double f(double l, double Om, double kx, double ky) {
double r50374 = 1.0;
double r50375 = 2.0;
double r50376 = r50374 / r50375;
double r50377 = l;
double r50378 = r50375 * r50377;
double r50379 = Om;
double r50380 = r50378 / r50379;
double r50381 = pow(r50380, r50375);
double r50382 = kx;
double r50383 = sin(r50382);
double r50384 = pow(r50383, r50375);
double r50385 = ky;
double r50386 = sin(r50385);
double r50387 = pow(r50386, r50375);
double r50388 = r50384 + r50387;
double r50389 = r50381 * r50388;
double r50390 = r50374 + r50389;
double r50391 = sqrt(r50390);
double r50392 = r50374 / r50391;
double r50393 = r50374 + r50392;
double r50394 = r50376 * r50393;
double r50395 = sqrt(r50394);
return r50395;
}
double f(double l, double Om, double kx, double ky) {
double r50396 = 1.0;
double r50397 = 2.0;
double r50398 = r50396 / r50397;
double r50399 = l;
double r50400 = r50397 * r50399;
double r50401 = Om;
double r50402 = r50400 / r50401;
double r50403 = 2.0;
double r50404 = r50397 / r50403;
double r50405 = pow(r50402, r50404);
double r50406 = kx;
double r50407 = sin(r50406);
double r50408 = pow(r50407, r50397);
double r50409 = ky;
double r50410 = sin(r50409);
double r50411 = pow(r50410, r50397);
double r50412 = r50408 + r50411;
double r50413 = r50405 * r50412;
double r50414 = r50405 * r50413;
double r50415 = r50396 + r50414;
double r50416 = sqrt(r50415);
double r50417 = r50396 / r50416;
double r50418 = r50396 + r50417;
double r50419 = r50398 * r50418;
double r50420 = sqrt(r50419);
return r50420;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Results
Initial program 1.6
rmApplied sqr-pow1.6
Applied associate-*l*1.4
Final simplification1.4
herbie shell --seed 2019198 +o rules:numerics
(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))))))))))