\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 r39262 = ky;
double r39263 = sin(r39262);
double r39264 = kx;
double r39265 = sin(r39264);
double r39266 = 2.0;
double r39267 = pow(r39265, r39266);
double r39268 = pow(r39263, r39266);
double r39269 = r39267 + r39268;
double r39270 = sqrt(r39269);
double r39271 = r39263 / r39270;
double r39272 = th;
double r39273 = sin(r39272);
double r39274 = r39271 * r39273;
return r39274;
}
double f(double kx, double ky, double th) {
double r39275 = ky;
double r39276 = sin(r39275);
double r39277 = kx;
double r39278 = sin(r39277);
double r39279 = 2.0;
double r39280 = pow(r39278, r39279);
double r39281 = pow(r39276, r39279);
double r39282 = r39280 + r39281;
double r39283 = sqrt(r39282);
double r39284 = r39276 / r39283;
double r39285 = 1.0;
bool r39286 = r39284 <= r39285;
double r39287 = 1.0;
double r39288 = 2.0;
double r39289 = pow(r39278, r39288);
double r39290 = pow(r39276, r39288);
double r39291 = r39289 + r39290;
double r39292 = r39287 / r39291;
double r39293 = sqrt(r39292);
double r39294 = r39293 * r39276;
double r39295 = th;
double r39296 = sin(r39295);
double r39297 = r39294 * r39296;
double r39298 = 0.08333333333333333;
double r39299 = pow(r39277, r39288);
double r39300 = r39299 * r39275;
double r39301 = r39298 * r39300;
double r39302 = r39275 + r39301;
double r39303 = 0.16666666666666666;
double r39304 = 3.0;
double r39305 = pow(r39275, r39304);
double r39306 = r39303 * r39305;
double r39307 = r39302 - r39306;
double r39308 = r39276 / r39307;
double r39309 = r39308 * r39296;
double r39310 = r39286 ? r39297 : r39309;
return r39310;
}



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)))