\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 0.99999999999092881:\\
\;\;\;\;\left(\sin ky \cdot \frac{1}{\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}}}\right) \cdot \sin th\\
\mathbf{else}:\\
\;\;\;\;\left(1 - \frac{1}{6} \cdot {kx}^{2}\right) \cdot \sin th\\
\end{array}double f(double kx, double ky, double th) {
double r41436 = ky;
double r41437 = sin(r41436);
double r41438 = kx;
double r41439 = sin(r41438);
double r41440 = 2.0;
double r41441 = pow(r41439, r41440);
double r41442 = pow(r41437, r41440);
double r41443 = r41441 + r41442;
double r41444 = sqrt(r41443);
double r41445 = r41437 / r41444;
double r41446 = th;
double r41447 = sin(r41446);
double r41448 = r41445 * r41447;
return r41448;
}
double f(double kx, double ky, double th) {
double r41449 = ky;
double r41450 = sin(r41449);
double r41451 = kx;
double r41452 = sin(r41451);
double r41453 = 2.0;
double r41454 = pow(r41452, r41453);
double r41455 = pow(r41450, r41453);
double r41456 = r41454 + r41455;
double r41457 = sqrt(r41456);
double r41458 = r41450 / r41457;
double r41459 = 0.9999999999909288;
bool r41460 = r41458 <= r41459;
double r41461 = 1.0;
double r41462 = cbrt(r41452);
double r41463 = r41462 * r41462;
double r41464 = pow(r41463, r41453);
double r41465 = pow(r41462, r41453);
double r41466 = r41464 * r41465;
double r41467 = r41466 + r41455;
double r41468 = sqrt(r41467);
double r41469 = r41461 / r41468;
double r41470 = r41450 * r41469;
double r41471 = th;
double r41472 = sin(r41471);
double r41473 = r41470 * r41472;
double r41474 = 0.16666666666666666;
double r41475 = 2.0;
double r41476 = pow(r41451, r41475);
double r41477 = r41474 * r41476;
double r41478 = r41461 - r41477;
double r41479 = r41478 * r41472;
double r41480 = r41460 ? r41473 : r41479;
return r41480;
}



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)))) < 0.9999999999909288Initial program 13.2
rmApplied div-inv13.3
rmApplied add-cube-cbrt13.6
Applied unpow-prod-down13.6
if 0.9999999999909288 < (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)))) Initial program 8.8
rmApplied clear-num8.8
Taylor expanded around 0 3.7
Final simplification11.7
herbie shell --seed 2020043
(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)))