\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(\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 r35432 = ky;
double r35433 = sin(r35432);
double r35434 = kx;
double r35435 = sin(r35434);
double r35436 = 2.0;
double r35437 = pow(r35435, r35436);
double r35438 = pow(r35433, r35436);
double r35439 = r35437 + r35438;
double r35440 = sqrt(r35439);
double r35441 = r35433 / r35440;
double r35442 = th;
double r35443 = sin(r35442);
double r35444 = r35441 * r35443;
return r35444;
}
double f(double kx, double ky, double th) {
double r35445 = ky;
double r35446 = sin(r35445);
double r35447 = kx;
double r35448 = sin(r35447);
double r35449 = 2.0;
double r35450 = pow(r35448, r35449);
double r35451 = pow(r35446, r35449);
double r35452 = r35450 + r35451;
double r35453 = sqrt(r35452);
double r35454 = r35446 / r35453;
double r35455 = 1.0;
bool r35456 = r35454 <= r35455;
double r35457 = 1.0;
double r35458 = r35457 / r35453;
double r35459 = r35446 * r35458;
double r35460 = th;
double r35461 = sin(r35460);
double r35462 = r35459 * r35461;
double r35463 = 0.08333333333333333;
double r35464 = 2.0;
double r35465 = pow(r35447, r35464);
double r35466 = r35465 * r35445;
double r35467 = r35463 * r35466;
double r35468 = r35445 + r35467;
double r35469 = 0.16666666666666666;
double r35470 = 3.0;
double r35471 = pow(r35445, r35470);
double r35472 = r35469 * r35471;
double r35473 = r35468 - r35472;
double r35474 = r35446 / r35473;
double r35475 = r35474 * r35461;
double r35476 = r35456 ? r35462 : r35475;
return r35476;
}



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
if 1.0 < (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)))) Initial program 62.8
Taylor expanded around 0 28.1
Final simplification11.7
herbie shell --seed 2019294
(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)))