\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 + \log \left(e^{\frac{1}{\sqrt[3]{{\left(\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}\right)}^{3}}}}\right)\right)}double f(double l, double Om, double kx, double ky) {
double r65698 = 1.0;
double r65699 = 2.0;
double r65700 = r65698 / r65699;
double r65701 = l;
double r65702 = r65699 * r65701;
double r65703 = Om;
double r65704 = r65702 / r65703;
double r65705 = pow(r65704, r65699);
double r65706 = kx;
double r65707 = sin(r65706);
double r65708 = pow(r65707, r65699);
double r65709 = ky;
double r65710 = sin(r65709);
double r65711 = pow(r65710, r65699);
double r65712 = r65708 + r65711;
double r65713 = r65705 * r65712;
double r65714 = r65698 + r65713;
double r65715 = sqrt(r65714);
double r65716 = r65698 / r65715;
double r65717 = r65698 + r65716;
double r65718 = r65700 * r65717;
double r65719 = sqrt(r65718);
return r65719;
}
double f(double l, double Om, double kx, double ky) {
double r65720 = 1.0;
double r65721 = 2.0;
double r65722 = r65720 / r65721;
double r65723 = l;
double r65724 = r65721 * r65723;
double r65725 = Om;
double r65726 = r65724 / r65725;
double r65727 = pow(r65726, r65721);
double r65728 = kx;
double r65729 = sin(r65728);
double r65730 = pow(r65729, r65721);
double r65731 = ky;
double r65732 = sin(r65731);
double r65733 = pow(r65732, r65721);
double r65734 = r65730 + r65733;
double r65735 = r65727 * r65734;
double r65736 = r65720 + r65735;
double r65737 = sqrt(r65736);
double r65738 = 3.0;
double r65739 = pow(r65737, r65738);
double r65740 = cbrt(r65739);
double r65741 = r65720 / r65740;
double r65742 = exp(r65741);
double r65743 = log(r65742);
double r65744 = r65720 + r65743;
double r65745 = r65722 * r65744;
double r65746 = sqrt(r65745);
return r65746;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Results
Initial program 1.7
rmApplied add-cbrt-cube1.7
Simplified1.7
rmApplied add-log-exp1.7
Final simplification1.7
herbie shell --seed 2020021 +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))))))))))