\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\begin{array}{l}
\mathbf{if}\;\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \le 1:\\
\;\;\;\;\sin ky \cdot \frac{-\sin th}{-\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sin ky}{\left(ky + \frac{1}{12} \cdot \left({kx}^{2} \cdot ky\right)\right) - \frac{1}{6} \cdot {ky}^{3}} \cdot \sin th\\
\end{array}double f(double kx, double ky, double th) {
double r46831 = ky;
double r46832 = sin(r46831);
double r46833 = kx;
double r46834 = sin(r46833);
double r46835 = 2.0;
double r46836 = pow(r46834, r46835);
double r46837 = pow(r46832, r46835);
double r46838 = r46836 + r46837;
double r46839 = sqrt(r46838);
double r46840 = r46832 / r46839;
double r46841 = th;
double r46842 = sin(r46841);
double r46843 = r46840 * r46842;
return r46843;
}
double f(double kx, double ky, double th) {
double r46844 = ky;
double r46845 = sin(r46844);
double r46846 = kx;
double r46847 = sin(r46846);
double r46848 = 2.0;
double r46849 = pow(r46847, r46848);
double r46850 = pow(r46845, r46848);
double r46851 = r46849 + r46850;
double r46852 = sqrt(r46851);
double r46853 = r46845 / r46852;
double r46854 = 1.0;
bool r46855 = r46853 <= r46854;
double r46856 = th;
double r46857 = sin(r46856);
double r46858 = -r46857;
double r46859 = -r46852;
double r46860 = r46858 / r46859;
double r46861 = r46845 * r46860;
double r46862 = 0.08333333333333333;
double r46863 = 2.0;
double r46864 = pow(r46846, r46863);
double r46865 = r46864 * r46844;
double r46866 = r46862 * r46865;
double r46867 = r46844 + r46866;
double r46868 = 0.16666666666666666;
double r46869 = 3.0;
double r46870 = pow(r46844, r46869);
double r46871 = r46868 * r46870;
double r46872 = r46867 - r46871;
double r46873 = r46845 / r46872;
double r46874 = r46873 * r46857;
double r46875 = r46855 ? r46861 : r46874;
return r46875;
}



Bits error versus kx



Bits error versus ky



Bits error versus th
Results
if (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)))) < 1.0Initial program 10.9
rmApplied div-inv11.0
Applied associate-*l*11.0
Simplified10.9
rmApplied frac-2neg10.9
if 1.0 < (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)))) Initial program 62.9
Taylor expanded around 0 28.7
Final simplification11.4
herbie shell --seed 2020020
(FPCore (kx ky th)
:name "Toniolo and Linder, Equation (3b), real"
:precision binary64
(* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)))