\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)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sqrt[3]{\sin ky} \cdot \sqrt[3]{\sin ky}\right)}^{2} \cdot {\left(\sqrt[3]{\sin ky}\right)}^{2}\right)}}\right)}double f(double l, double Om, double kx, double ky) {
double r35555 = 1.0;
double r35556 = 2.0;
double r35557 = r35555 / r35556;
double r35558 = l;
double r35559 = r35556 * r35558;
double r35560 = Om;
double r35561 = r35559 / r35560;
double r35562 = pow(r35561, r35556);
double r35563 = kx;
double r35564 = sin(r35563);
double r35565 = pow(r35564, r35556);
double r35566 = ky;
double r35567 = sin(r35566);
double r35568 = pow(r35567, r35556);
double r35569 = r35565 + r35568;
double r35570 = r35562 * r35569;
double r35571 = r35555 + r35570;
double r35572 = sqrt(r35571);
double r35573 = r35555 / r35572;
double r35574 = r35555 + r35573;
double r35575 = r35557 * r35574;
double r35576 = sqrt(r35575);
return r35576;
}
double f(double l, double Om, double kx, double ky) {
double r35577 = 1.0;
double r35578 = 2.0;
double r35579 = r35577 / r35578;
double r35580 = l;
double r35581 = r35578 * r35580;
double r35582 = Om;
double r35583 = r35581 / r35582;
double r35584 = pow(r35583, r35578);
double r35585 = kx;
double r35586 = sin(r35585);
double r35587 = pow(r35586, r35578);
double r35588 = ky;
double r35589 = sin(r35588);
double r35590 = cbrt(r35589);
double r35591 = r35590 * r35590;
double r35592 = pow(r35591, r35578);
double r35593 = pow(r35590, r35578);
double r35594 = r35592 * r35593;
double r35595 = r35587 + r35594;
double r35596 = r35584 * r35595;
double r35597 = r35577 + r35596;
double r35598 = sqrt(r35597);
double r35599 = r35577 / r35598;
double r35600 = r35577 + r35599;
double r35601 = r35579 * r35600;
double r35602 = sqrt(r35601);
return r35602;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Results
Initial program 1.8
rmApplied add-cube-cbrt1.8
Applied unpow-prod-down1.8
Final simplification1.8
herbie shell --seed 2019304
(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))))))))))