\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 \frac{\sin th}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}}\\
\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 r39609 = ky;
double r39610 = sin(r39609);
double r39611 = kx;
double r39612 = sin(r39611);
double r39613 = 2.0;
double r39614 = pow(r39612, r39613);
double r39615 = pow(r39610, r39613);
double r39616 = r39614 + r39615;
double r39617 = sqrt(r39616);
double r39618 = r39610 / r39617;
double r39619 = th;
double r39620 = sin(r39619);
double r39621 = r39618 * r39620;
return r39621;
}
double f(double kx, double ky, double th) {
double r39622 = ky;
double r39623 = sin(r39622);
double r39624 = kx;
double r39625 = sin(r39624);
double r39626 = 2.0;
double r39627 = pow(r39625, r39626);
double r39628 = pow(r39623, r39626);
double r39629 = r39627 + r39628;
double r39630 = sqrt(r39629);
double r39631 = r39623 / r39630;
double r39632 = 1.0;
bool r39633 = r39631 <= r39632;
double r39634 = th;
double r39635 = sin(r39634);
double r39636 = r39635 / r39630;
double r39637 = r39623 * r39636;
double r39638 = 0.08333333333333333;
double r39639 = 2.0;
double r39640 = pow(r39624, r39639);
double r39641 = r39640 * r39622;
double r39642 = r39638 * r39641;
double r39643 = r39622 + r39642;
double r39644 = 0.16666666666666666;
double r39645 = 3.0;
double r39646 = pow(r39622, r39645);
double r39647 = r39644 * r39646;
double r39648 = r39643 - r39647;
double r39649 = r39623 / r39648;
double r39650 = r39649 * r39635;
double r39651 = r39633 ? r39637 : r39650;
return r39651;
}



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.5
rmApplied div-inv11.6
Applied associate-*l*11.7
Simplified11.6
if 1.0 < (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)))) Initial program 63.2
Taylor expanded around 0 31.9
Final simplification12.1
herbie shell --seed 2020024
(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)))