\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 0.99997459937795885:\\
\;\;\;\;\left(\frac{1}{\sqrt{\sqrt{{1}^{2}}}} \cdot \frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}}\right) \cdot \sin th\\
\mathbf{else}:\\
\;\;\;\;\left(1 - \frac{1}{6} \cdot {kx}^{2}\right) \cdot \sin th\\
\end{array}double f(double kx, double ky, double th) {
double r38927 = ky;
double r38928 = sin(r38927);
double r38929 = kx;
double r38930 = sin(r38929);
double r38931 = 2.0;
double r38932 = pow(r38930, r38931);
double r38933 = pow(r38928, r38931);
double r38934 = r38932 + r38933;
double r38935 = sqrt(r38934);
double r38936 = r38928 / r38935;
double r38937 = th;
double r38938 = sin(r38937);
double r38939 = r38936 * r38938;
return r38939;
}
double f(double kx, double ky, double th) {
double r38940 = ky;
double r38941 = sin(r38940);
double r38942 = kx;
double r38943 = sin(r38942);
double r38944 = 2.0;
double r38945 = pow(r38943, r38944);
double r38946 = pow(r38941, r38944);
double r38947 = r38945 + r38946;
double r38948 = sqrt(r38947);
double r38949 = r38941 / r38948;
double r38950 = 0.9999745993779589;
bool r38951 = r38949 <= r38950;
double r38952 = 1.0;
double r38953 = pow(r38952, r38944);
double r38954 = sqrt(r38953);
double r38955 = sqrt(r38954);
double r38956 = r38952 / r38955;
double r38957 = r38956 * r38949;
double r38958 = th;
double r38959 = sin(r38958);
double r38960 = r38957 * r38959;
double r38961 = 0.16666666666666666;
double r38962 = 2.0;
double r38963 = pow(r38942, r38962);
double r38964 = r38961 * r38963;
double r38965 = r38952 - r38964;
double r38966 = r38965 * r38959;
double r38967 = r38951 ? r38960 : r38966;
return r38967;
}



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)))) < 0.9999745993779589Initial program 0.6
rmApplied add-sqr-sqrt0.6
Applied sqrt-prod0.8
Applied *-un-lft-identity0.8
Applied times-frac0.8
rmApplied *-un-lft-identity0.8
Applied unpow-prod-down0.8
Applied *-un-lft-identity0.8
Applied unpow-prod-down0.8
Applied distribute-lft-out0.8
Applied sqrt-prod0.8
Applied sqrt-prod0.8
Applied *-un-lft-identity0.8
Applied times-frac0.8
Applied associate-*l*0.8
Simplified0.6
if 0.9999745993779589 < (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)))) Initial program 9.7
rmApplied clear-num9.7
Taylor expanded around 0 4.8
Final simplification2.3
herbie shell --seed 2020046
(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)))