\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{\frac{1}{2}}{\sqrt{\sqrt{\mathsf{fma}\left(4, \frac{\sin kx}{\frac{Om}{\ell}} \cdot \frac{\sin kx}{\frac{Om}{\ell}} + \frac{\ell}{\frac{Om}{\sin ky}} \cdot \frac{\ell}{\frac{Om}{\sin ky}}, 1\right)}} \cdot \sqrt{\sqrt{\mathsf{fma}\left(4, \frac{\sin kx}{\frac{Om}{\ell}} \cdot \frac{\sin kx}{\frac{Om}{\ell}} + \frac{\ell}{\frac{Om}{\sin ky}} \cdot \frac{\ell}{\frac{Om}{\sin ky}}, 1\right)}}} + \frac{1}{2}}double f(double l, double Om, double kx, double ky) {
double r930653 = 1.0;
double r930654 = 2.0;
double r930655 = r930653 / r930654;
double r930656 = l;
double r930657 = r930654 * r930656;
double r930658 = Om;
double r930659 = r930657 / r930658;
double r930660 = pow(r930659, r930654);
double r930661 = kx;
double r930662 = sin(r930661);
double r930663 = pow(r930662, r930654);
double r930664 = ky;
double r930665 = sin(r930664);
double r930666 = pow(r930665, r930654);
double r930667 = r930663 + r930666;
double r930668 = r930660 * r930667;
double r930669 = r930653 + r930668;
double r930670 = sqrt(r930669);
double r930671 = r930653 / r930670;
double r930672 = r930653 + r930671;
double r930673 = r930655 * r930672;
double r930674 = sqrt(r930673);
return r930674;
}
double f(double l, double Om, double kx, double ky) {
double r930675 = 0.5;
double r930676 = 4.0;
double r930677 = kx;
double r930678 = sin(r930677);
double r930679 = Om;
double r930680 = l;
double r930681 = r930679 / r930680;
double r930682 = r930678 / r930681;
double r930683 = r930682 * r930682;
double r930684 = ky;
double r930685 = sin(r930684);
double r930686 = r930679 / r930685;
double r930687 = r930680 / r930686;
double r930688 = r930687 * r930687;
double r930689 = r930683 + r930688;
double r930690 = 1.0;
double r930691 = fma(r930676, r930689, r930690);
double r930692 = sqrt(r930691);
double r930693 = sqrt(r930692);
double r930694 = r930693 * r930693;
double r930695 = r930675 / r930694;
double r930696 = r930695 + r930675;
double r930697 = sqrt(r930696);
return r930697;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Initial program 1.7
Simplified1.7
Taylor expanded around inf 16.3
Simplified0.6
rmApplied add-sqr-sqrt0.6
Applied sqrt-prod0.6
Final simplification0.6
herbie shell --seed 2019152 +o rules:numerics
(FPCore (l Om kx ky)
:name "Toniolo and Linder, Equation (3a)"
(sqrt (* (/ 1 2) (+ 1 (/ 1 (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))