\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 r40292 = ky;
double r40293 = sin(r40292);
double r40294 = kx;
double r40295 = sin(r40294);
double r40296 = 2.0;
double r40297 = pow(r40295, r40296);
double r40298 = pow(r40293, r40296);
double r40299 = r40297 + r40298;
double r40300 = sqrt(r40299);
double r40301 = r40293 / r40300;
double r40302 = th;
double r40303 = sin(r40302);
double r40304 = r40301 * r40303;
return r40304;
}
double f(double kx, double ky, double th) {
double r40305 = ky;
double r40306 = sin(r40305);
double r40307 = kx;
double r40308 = sin(r40307);
double r40309 = 2.0;
double r40310 = pow(r40308, r40309);
double r40311 = pow(r40306, r40309);
double r40312 = r40310 + r40311;
double r40313 = sqrt(r40312);
double r40314 = r40306 / r40313;
double r40315 = 1.0;
bool r40316 = r40314 <= r40315;
double r40317 = cbrt(r40308);
double r40318 = r40317 * r40317;
double r40319 = pow(r40318, r40309);
double r40320 = pow(r40317, r40309);
double r40321 = r40319 * r40320;
double r40322 = r40321 + r40311;
double r40323 = sqrt(r40322);
double r40324 = r40306 / r40323;
double r40325 = th;
double r40326 = sin(r40325);
double r40327 = r40324 * r40326;
double r40328 = 0.08333333333333333;
double r40329 = 2.0;
double r40330 = pow(r40307, r40329);
double r40331 = r40330 * r40305;
double r40332 = r40328 * r40331;
double r40333 = r40305 + r40332;
double r40334 = 0.16666666666666666;
double r40335 = 3.0;
double r40336 = pow(r40305, r40335);
double r40337 = r40334 * r40336;
double r40338 = r40333 - r40337;
double r40339 = r40306 / r40338;
double r40340 = r40339 * r40326;
double r40341 = r40316 ? r40327 : r40340;
return r40341;
}



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.0
rmApplied add-cube-cbrt11.2
Applied unpow-prod-down11.2
if 1.0 < (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)))) Initial program 63.0
Taylor expanded around 0 30.2
Final simplification11.7
herbie shell --seed 2020033
(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)))