\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[3]{{\left(\sqrt{1 + \left({\left(\frac{2 \cdot \ell}{Om}\right)}^{\left(\frac{2}{2}\right)} \cdot \sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}\right) \cdot \left({\left(\frac{2 \cdot \ell}{Om}\right)}^{\left(\frac{2}{2}\right)} \cdot \sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}\right)}\right)}^{3}}}\right)}double f(double l, double Om, double kx, double ky) {
double r49538 = 1.0;
double r49539 = 2.0;
double r49540 = r49538 / r49539;
double r49541 = l;
double r49542 = r49539 * r49541;
double r49543 = Om;
double r49544 = r49542 / r49543;
double r49545 = pow(r49544, r49539);
double r49546 = kx;
double r49547 = sin(r49546);
double r49548 = pow(r49547, r49539);
double r49549 = ky;
double r49550 = sin(r49549);
double r49551 = pow(r49550, r49539);
double r49552 = r49548 + r49551;
double r49553 = r49545 * r49552;
double r49554 = r49538 + r49553;
double r49555 = sqrt(r49554);
double r49556 = r49538 / r49555;
double r49557 = r49538 + r49556;
double r49558 = r49540 * r49557;
double r49559 = sqrt(r49558);
return r49559;
}
double f(double l, double Om, double kx, double ky) {
double r49560 = 1.0;
double r49561 = 2.0;
double r49562 = r49560 / r49561;
double r49563 = l;
double r49564 = r49561 * r49563;
double r49565 = Om;
double r49566 = r49564 / r49565;
double r49567 = 2.0;
double r49568 = r49561 / r49567;
double r49569 = pow(r49566, r49568);
double r49570 = kx;
double r49571 = sin(r49570);
double r49572 = pow(r49571, r49561);
double r49573 = ky;
double r49574 = sin(r49573);
double r49575 = pow(r49574, r49561);
double r49576 = r49572 + r49575;
double r49577 = sqrt(r49576);
double r49578 = r49569 * r49577;
double r49579 = r49578 * r49578;
double r49580 = r49560 + r49579;
double r49581 = sqrt(r49580);
double r49582 = 3.0;
double r49583 = pow(r49581, r49582);
double r49584 = cbrt(r49583);
double r49585 = r49560 / r49584;
double r49586 = r49560 + r49585;
double r49587 = r49562 * r49586;
double r49588 = sqrt(r49587);
return r49588;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Results
Initial program 1.8
rmApplied add-sqr-sqrt1.8
Applied sqr-pow1.8
Applied unswap-sqr1.5
rmApplied add-cbrt-cube1.5
Simplified1.5
Final simplification1.5
herbie shell --seed 2020039 +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))))))))))