\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 \left(\frac{1}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\right)\\
\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 r32510 = ky;
double r32511 = sin(r32510);
double r32512 = kx;
double r32513 = sin(r32512);
double r32514 = 2.0;
double r32515 = pow(r32513, r32514);
double r32516 = pow(r32511, r32514);
double r32517 = r32515 + r32516;
double r32518 = sqrt(r32517);
double r32519 = r32511 / r32518;
double r32520 = th;
double r32521 = sin(r32520);
double r32522 = r32519 * r32521;
return r32522;
}
double f(double kx, double ky, double th) {
double r32523 = ky;
double r32524 = sin(r32523);
double r32525 = kx;
double r32526 = sin(r32525);
double r32527 = 2.0;
double r32528 = pow(r32526, r32527);
double r32529 = pow(r32524, r32527);
double r32530 = r32528 + r32529;
double r32531 = sqrt(r32530);
double r32532 = r32524 / r32531;
double r32533 = 1.0;
bool r32534 = r32532 <= r32533;
double r32535 = 1.0;
double r32536 = r32535 / r32531;
double r32537 = th;
double r32538 = sin(r32537);
double r32539 = r32536 * r32538;
double r32540 = r32524 * r32539;
double r32541 = 0.08333333333333333;
double r32542 = 2.0;
double r32543 = pow(r32525, r32542);
double r32544 = r32543 * r32523;
double r32545 = r32541 * r32544;
double r32546 = r32523 + r32545;
double r32547 = 0.16666666666666666;
double r32548 = 3.0;
double r32549 = pow(r32523, r32548);
double r32550 = r32547 * r32549;
double r32551 = r32546 - r32550;
double r32552 = r32524 / r32551;
double r32553 = r32552 * r32538;
double r32554 = r32534 ? r32540 : r32553;
return r32554;
}



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.1
rmApplied div-inv11.2
Applied associate-*l*11.3
if 1.0 < (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)))) Initial program 63.1
Taylor expanded around 0 30.0
Final simplification11.8
herbie shell --seed 2019304
(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)))