\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\left(\sqrt[3]{\frac{\sin ky}{\mathsf{hypot}\left(\sin ky, \sin kx\right)}} \cdot \left(\sqrt[3]{\frac{\sqrt[3]{\sin ky} \cdot \sqrt[3]{\sin ky}}{\sqrt[3]{\mathsf{hypot}\left(\sin ky, \sin kx\right)} \cdot \sqrt[3]{\mathsf{hypot}\left(\sin ky, \sin kx\right)}}} \cdot \sqrt[3]{\frac{\sqrt[3]{\sin ky}}{\sqrt[3]{\mathsf{hypot}\left(\sin ky, \sin kx\right)}}}\right)\right) \cdot \left(\sqrt[3]{\frac{\sin ky}{\mathsf{hypot}\left(\sin ky, \sin kx\right)}} \cdot \sin th\right)double f(double kx, double ky, double th) {
double r44626 = ky;
double r44627 = sin(r44626);
double r44628 = kx;
double r44629 = sin(r44628);
double r44630 = 2.0;
double r44631 = pow(r44629, r44630);
double r44632 = pow(r44627, r44630);
double r44633 = r44631 + r44632;
double r44634 = sqrt(r44633);
double r44635 = r44627 / r44634;
double r44636 = th;
double r44637 = sin(r44636);
double r44638 = r44635 * r44637;
return r44638;
}
double f(double kx, double ky, double th) {
double r44639 = ky;
double r44640 = sin(r44639);
double r44641 = kx;
double r44642 = sin(r44641);
double r44643 = hypot(r44640, r44642);
double r44644 = r44640 / r44643;
double r44645 = cbrt(r44644);
double r44646 = cbrt(r44640);
double r44647 = r44646 * r44646;
double r44648 = cbrt(r44643);
double r44649 = r44648 * r44648;
double r44650 = r44647 / r44649;
double r44651 = cbrt(r44650);
double r44652 = r44646 / r44648;
double r44653 = cbrt(r44652);
double r44654 = r44651 * r44653;
double r44655 = r44645 * r44654;
double r44656 = th;
double r44657 = sin(r44656);
double r44658 = r44645 * r44657;
double r44659 = r44655 * r44658;
return r44659;
}



Bits error versus kx



Bits error versus ky



Bits error versus th
Results
Initial program 12.5
Taylor expanded around inf 12.5
Simplified8.8
rmApplied add-cube-cbrt9.2
Applied associate-*l*9.2
rmApplied add-cube-cbrt9.2
Applied add-cube-cbrt9.2
Applied times-frac9.2
Applied cbrt-prod9.2
Final simplification9.2
herbie shell --seed 2019353 +o rules:numerics
(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)))