\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:\\
\;\;\;\;\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\\
\mathbf{else}:\\
\;\;\;\;\frac{\sin ky \cdot \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 r39558 = ky;
double r39559 = sin(r39558);
double r39560 = kx;
double r39561 = sin(r39560);
double r39562 = 2.0;
double r39563 = pow(r39561, r39562);
double r39564 = pow(r39559, r39562);
double r39565 = r39563 + r39564;
double r39566 = sqrt(r39565);
double r39567 = r39559 / r39566;
double r39568 = th;
double r39569 = sin(r39568);
double r39570 = r39567 * r39569;
return r39570;
}
double f(double kx, double ky, double th) {
double r39571 = ky;
double r39572 = sin(r39571);
double r39573 = kx;
double r39574 = sin(r39573);
double r39575 = 2.0;
double r39576 = pow(r39574, r39575);
double r39577 = pow(r39572, r39575);
double r39578 = r39576 + r39577;
double r39579 = sqrt(r39578);
double r39580 = r39572 / r39579;
double r39581 = 1.0;
bool r39582 = r39580 <= r39581;
double r39583 = th;
double r39584 = sin(r39583);
double r39585 = r39580 * r39584;
double r39586 = r39572 * r39584;
double r39587 = 0.08333333333333333;
double r39588 = 2.0;
double r39589 = pow(r39573, r39588);
double r39590 = r39589 * r39571;
double r39591 = r39587 * r39590;
double r39592 = r39571 + r39591;
double r39593 = 0.16666666666666666;
double r39594 = 3.0;
double r39595 = pow(r39571, r39594);
double r39596 = r39593 * r39595;
double r39597 = r39592 - r39596;
double r39598 = r39586 / r39597;
double r39599 = r39582 ? r39585 : r39598;
return r39599;
}



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 1.9
if 1.0 < (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)))) Initial program 63.8
rmApplied associate-*l/63.8
Taylor expanded around 0 36.1
Final simplification3.0
herbie shell --seed 2020100
(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)))