\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}:\\
\;\;\;\;\sin ky \cdot \frac{\sin th}{\left(ky + \frac{1}{12} \cdot \left({kx}^{2} \cdot ky\right)\right) - \frac{1}{6} \cdot {ky}^{3}}\\
\end{array}double f(double kx, double ky, double th) {
double r34887 = ky;
double r34888 = sin(r34887);
double r34889 = kx;
double r34890 = sin(r34889);
double r34891 = 2.0;
double r34892 = pow(r34890, r34891);
double r34893 = pow(r34888, r34891);
double r34894 = r34892 + r34893;
double r34895 = sqrt(r34894);
double r34896 = r34888 / r34895;
double r34897 = th;
double r34898 = sin(r34897);
double r34899 = r34896 * r34898;
return r34899;
}
double f(double kx, double ky, double th) {
double r34900 = ky;
double r34901 = sin(r34900);
double r34902 = kx;
double r34903 = sin(r34902);
double r34904 = 2.0;
double r34905 = pow(r34903, r34904);
double r34906 = pow(r34901, r34904);
double r34907 = r34905 + r34906;
double r34908 = sqrt(r34907);
double r34909 = r34901 / r34908;
double r34910 = 1.0;
bool r34911 = r34909 <= r34910;
double r34912 = th;
double r34913 = sin(r34912);
double r34914 = r34913 / r34908;
double r34915 = r34901 * r34914;
double r34916 = 0.08333333333333333;
double r34917 = 2.0;
double r34918 = pow(r34902, r34917);
double r34919 = r34918 * r34900;
double r34920 = r34916 * r34919;
double r34921 = r34900 + r34920;
double r34922 = 0.16666666666666666;
double r34923 = 3.0;
double r34924 = pow(r34900, r34923);
double r34925 = r34922 * r34924;
double r34926 = r34921 - r34925;
double r34927 = r34913 / r34926;
double r34928 = r34901 * r34927;
double r34929 = r34911 ? r34915 : r34928;
return r34929;
}



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 11.0
rmApplied div-inv11.1
Applied associate-*l*11.1
Simplified11.1
if 1.0 < (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)))) Initial program 63.1
rmApplied div-inv63.1
Applied associate-*l*63.1
Simplified63.1
Taylor expanded around 0 31.0
Final simplification11.6
herbie shell --seed 2019235
(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)))