\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:\\
\;\;\;\;\left(\sqrt{\frac{1}{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin ky\right) \cdot \sin th\\
\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 r39138 = ky;
double r39139 = sin(r39138);
double r39140 = kx;
double r39141 = sin(r39140);
double r39142 = 2.0;
double r39143 = pow(r39141, r39142);
double r39144 = pow(r39139, r39142);
double r39145 = r39143 + r39144;
double r39146 = sqrt(r39145);
double r39147 = r39139 / r39146;
double r39148 = th;
double r39149 = sin(r39148);
double r39150 = r39147 * r39149;
return r39150;
}
double f(double kx, double ky, double th) {
double r39151 = ky;
double r39152 = sin(r39151);
double r39153 = kx;
double r39154 = sin(r39153);
double r39155 = 2.0;
double r39156 = pow(r39154, r39155);
double r39157 = pow(r39152, r39155);
double r39158 = r39156 + r39157;
double r39159 = sqrt(r39158);
double r39160 = r39152 / r39159;
double r39161 = 1.0;
bool r39162 = r39160 <= r39161;
double r39163 = 1.0;
double r39164 = 2.0;
double r39165 = pow(r39154, r39164);
double r39166 = pow(r39152, r39164);
double r39167 = r39165 + r39166;
double r39168 = r39163 / r39167;
double r39169 = sqrt(r39168);
double r39170 = r39169 * r39152;
double r39171 = th;
double r39172 = sin(r39171);
double r39173 = r39170 * r39172;
double r39174 = 0.08333333333333333;
double r39175 = pow(r39153, r39164);
double r39176 = r39175 * r39151;
double r39177 = r39174 * r39176;
double r39178 = r39151 + r39177;
double r39179 = 0.16666666666666666;
double r39180 = 3.0;
double r39181 = pow(r39151, r39180);
double r39182 = r39179 * r39181;
double r39183 = r39178 - r39182;
double r39184 = r39152 / r39183;
double r39185 = r39184 * r39172;
double r39186 = r39162 ? r39173 : r39185;
return r39186;
}



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
Taylor expanded around inf 11.3
if 1.0 < (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)))) Initial program 62.5
Taylor expanded around 0 30.5
Final simplification11.9
herbie shell --seed 2020042
(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)))