\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(\sqrt[3]{\sin kx} \cdot \sqrt[3]{\sin kx}\right)}^{2} \cdot {\left(\sqrt[3]{\sin kx}\right)}^{2} + {\left(\sin ky\right)}^{2}}} \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 r47193 = ky;
double r47194 = sin(r47193);
double r47195 = kx;
double r47196 = sin(r47195);
double r47197 = 2.0;
double r47198 = pow(r47196, r47197);
double r47199 = pow(r47194, r47197);
double r47200 = r47198 + r47199;
double r47201 = sqrt(r47200);
double r47202 = r47194 / r47201;
double r47203 = th;
double r47204 = sin(r47203);
double r47205 = r47202 * r47204;
return r47205;
}
double f(double kx, double ky, double th) {
double r47206 = ky;
double r47207 = sin(r47206);
double r47208 = kx;
double r47209 = sin(r47208);
double r47210 = 2.0;
double r47211 = pow(r47209, r47210);
double r47212 = pow(r47207, r47210);
double r47213 = r47211 + r47212;
double r47214 = sqrt(r47213);
double r47215 = r47207 / r47214;
double r47216 = 1.0;
bool r47217 = r47215 <= r47216;
double r47218 = cbrt(r47209);
double r47219 = r47218 * r47218;
double r47220 = pow(r47219, r47210);
double r47221 = pow(r47218, r47210);
double r47222 = r47220 * r47221;
double r47223 = r47222 + r47212;
double r47224 = sqrt(r47223);
double r47225 = r47207 / r47224;
double r47226 = th;
double r47227 = sin(r47226);
double r47228 = r47225 * r47227;
double r47229 = 0.08333333333333333;
double r47230 = 2.0;
double r47231 = pow(r47208, r47230);
double r47232 = r47231 * r47206;
double r47233 = r47229 * r47232;
double r47234 = r47206 + r47233;
double r47235 = 0.16666666666666666;
double r47236 = 3.0;
double r47237 = pow(r47206, r47236);
double r47238 = r47235 * r47237;
double r47239 = r47234 - r47238;
double r47240 = r47207 / r47239;
double r47241 = r47240 * r47227;
double r47242 = r47217 ? r47228 : r47241;
return r47242;
}



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 add-cube-cbrt11.3
Applied unpow-prod-down11.3
if 1.0 < (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)))) Initial program 63.6
Taylor expanded around 0 28.3
Final simplification11.8
herbie shell --seed 2019322
(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)))