\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{\mathsf{fma}\left(4, \left(\frac{\ell \cdot \sin kx}{Om} \cdot \frac{\ell \cdot \sin kx}{Om} + \frac{\sin ky \cdot \ell}{Om} \cdot \frac{\sin ky \cdot \ell}{Om}\right), 1\right)}} + \frac{1}{2}}double f(double l, double Om, double kx, double ky) {
double r5463713 = 1.0;
double r5463714 = 2.0;
double r5463715 = r5463713 / r5463714;
double r5463716 = l;
double r5463717 = r5463714 * r5463716;
double r5463718 = Om;
double r5463719 = r5463717 / r5463718;
double r5463720 = pow(r5463719, r5463714);
double r5463721 = kx;
double r5463722 = sin(r5463721);
double r5463723 = pow(r5463722, r5463714);
double r5463724 = ky;
double r5463725 = sin(r5463724);
double r5463726 = pow(r5463725, r5463714);
double r5463727 = r5463723 + r5463726;
double r5463728 = r5463720 * r5463727;
double r5463729 = r5463713 + r5463728;
double r5463730 = sqrt(r5463729);
double r5463731 = r5463713 / r5463730;
double r5463732 = r5463713 + r5463731;
double r5463733 = r5463715 * r5463732;
double r5463734 = sqrt(r5463733);
return r5463734;
}
double f(double l, double Om, double kx, double ky) {
double r5463735 = 0.5;
double r5463736 = 4.0;
double r5463737 = l;
double r5463738 = kx;
double r5463739 = sin(r5463738);
double r5463740 = r5463737 * r5463739;
double r5463741 = Om;
double r5463742 = r5463740 / r5463741;
double r5463743 = r5463742 * r5463742;
double r5463744 = ky;
double r5463745 = sin(r5463744);
double r5463746 = r5463745 * r5463737;
double r5463747 = r5463746 / r5463741;
double r5463748 = r5463747 * r5463747;
double r5463749 = r5463743 + r5463748;
double r5463750 = 1.0;
double r5463751 = fma(r5463736, r5463749, r5463750);
double r5463752 = sqrt(r5463751);
double r5463753 = r5463735 / r5463752;
double r5463754 = r5463753 + r5463735;
double r5463755 = sqrt(r5463754);
return r5463755;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Initial program 1.5
Simplified1.5
Taylor expanded around inf 16.4
Simplified0.6
Taylor expanded around inf 0.6
Final simplification0.6
herbie shell --seed 2019128 +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))))))))))