\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\begin{array}{l}
\mathbf{if}\;\sin ky \le -2.2959746765531517 \cdot 10^{-262}:\\
\;\;\;\;\frac{\sin ky}{\sqrt{\sin ky \cdot \sin ky + \sin kx \cdot \sin kx}} \cdot \sin th\\
\mathbf{elif}\;\sin ky \le 6.260135336698467 \cdot 10^{-286}:\\
\;\;\;\;\frac{\sin ky}{\left(kx + \left(ky \cdot ky\right) \cdot \left(\frac{1}{12} \cdot kx\right)\right) - \left(\left(kx \cdot kx\right) \cdot kx\right) \cdot \frac{1}{6}} \cdot \sin th\\
\mathbf{else}:\\
\;\;\;\;\frac{\sin ky}{\sqrt{\sin ky \cdot \sin ky + \sin kx \cdot \sin kx}} \cdot \sin th\\
\end{array}double f(double kx, double ky, double th) {
double r568548 = ky;
double r568549 = sin(r568548);
double r568550 = kx;
double r568551 = sin(r568550);
double r568552 = 2.0;
double r568553 = pow(r568551, r568552);
double r568554 = pow(r568549, r568552);
double r568555 = r568553 + r568554;
double r568556 = sqrt(r568555);
double r568557 = r568549 / r568556;
double r568558 = th;
double r568559 = sin(r568558);
double r568560 = r568557 * r568559;
return r568560;
}
double f(double kx, double ky, double th) {
double r568561 = ky;
double r568562 = sin(r568561);
double r568563 = -2.2959746765531517e-262;
bool r568564 = r568562 <= r568563;
double r568565 = r568562 * r568562;
double r568566 = kx;
double r568567 = sin(r568566);
double r568568 = r568567 * r568567;
double r568569 = r568565 + r568568;
double r568570 = sqrt(r568569);
double r568571 = r568562 / r568570;
double r568572 = th;
double r568573 = sin(r568572);
double r568574 = r568571 * r568573;
double r568575 = 6.260135336698467e-286;
bool r568576 = r568562 <= r568575;
double r568577 = r568561 * r568561;
double r568578 = 0.08333333333333333;
double r568579 = r568578 * r568566;
double r568580 = r568577 * r568579;
double r568581 = r568566 + r568580;
double r568582 = r568566 * r568566;
double r568583 = r568582 * r568566;
double r568584 = 0.16666666666666666;
double r568585 = r568583 * r568584;
double r568586 = r568581 - r568585;
double r568587 = r568562 / r568586;
double r568588 = r568587 * r568573;
double r568589 = r568576 ? r568588 : r568574;
double r568590 = r568564 ? r568574 : r568589;
return r568590;
}



Bits error versus kx



Bits error versus ky



Bits error versus th
Results
if (sin ky) < -2.2959746765531517e-262 or 6.260135336698467e-286 < (sin ky) Initial program 11.6
Simplified11.6
Taylor expanded around inf 11.6
Simplified11.6
if -2.2959746765531517e-262 < (sin ky) < 6.260135336698467e-286Initial program 23.1
Simplified23.1
Taylor expanded around inf 23.1
Simplified23.1
Taylor expanded around 0 27.8
Simplified27.8
Final simplification12.5
herbie shell --seed 2019156
(FPCore (kx ky th)
:name "Toniolo and Linder, Equation (3b), real"
(* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)))