\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(\sin ky \cdot \frac{1}{\sqrt{\left(\sqrt[3]{{\left(\sin kx\right)}^{2}} \cdot \sqrt[3]{{\left(\sin kx\right)}^{2}}\right) \cdot \sqrt[3]{{\left(\sin kx\right)}^{2}} + {\left(\sin ky\right)}^{2}}}\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 r41578 = ky;
double r41579 = sin(r41578);
double r41580 = kx;
double r41581 = sin(r41580);
double r41582 = 2.0;
double r41583 = pow(r41581, r41582);
double r41584 = pow(r41579, r41582);
double r41585 = r41583 + r41584;
double r41586 = sqrt(r41585);
double r41587 = r41579 / r41586;
double r41588 = th;
double r41589 = sin(r41588);
double r41590 = r41587 * r41589;
return r41590;
}
double f(double kx, double ky, double th) {
double r41591 = ky;
double r41592 = sin(r41591);
double r41593 = kx;
double r41594 = sin(r41593);
double r41595 = 2.0;
double r41596 = pow(r41594, r41595);
double r41597 = pow(r41592, r41595);
double r41598 = r41596 + r41597;
double r41599 = sqrt(r41598);
double r41600 = r41592 / r41599;
double r41601 = 1.0;
bool r41602 = r41600 <= r41601;
double r41603 = 1.0;
double r41604 = cbrt(r41596);
double r41605 = r41604 * r41604;
double r41606 = r41605 * r41604;
double r41607 = r41606 + r41597;
double r41608 = sqrt(r41607);
double r41609 = r41603 / r41608;
double r41610 = r41592 * r41609;
double r41611 = th;
double r41612 = sin(r41611);
double r41613 = r41610 * r41612;
double r41614 = 0.08333333333333333;
double r41615 = 2.0;
double r41616 = pow(r41593, r41615);
double r41617 = r41616 * r41591;
double r41618 = r41614 * r41617;
double r41619 = r41591 + r41618;
double r41620 = 0.16666666666666666;
double r41621 = 3.0;
double r41622 = pow(r41591, r41621);
double r41623 = r41620 * r41622;
double r41624 = r41619 - r41623;
double r41625 = r41592 / r41624;
double r41626 = r41625 * r41612;
double r41627 = r41602 ? r41613 : r41626;
return r41627;
}



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
rmApplied add-cube-cbrt11.3
if 1.0 < (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)))) Initial program 61.8
Taylor expanded around 0 31.3
Final simplification11.9
herbie shell --seed 2019306
(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)))