\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\sin th \cdot \left(\frac{\sin ky}{\mathsf{hypot}\left({\left(\sin kx\right)}^{\left(\frac{2}{2}\right)}, {\left(\sin ky\right)}^{\left(\frac{2}{2}\right)}\right)} \cdot \sqrt{1}\right)double f(double kx, double ky, double th) {
double r53228 = ky;
double r53229 = sin(r53228);
double r53230 = kx;
double r53231 = sin(r53230);
double r53232 = 2.0;
double r53233 = pow(r53231, r53232);
double r53234 = pow(r53229, r53232);
double r53235 = r53233 + r53234;
double r53236 = sqrt(r53235);
double r53237 = r53229 / r53236;
double r53238 = th;
double r53239 = sin(r53238);
double r53240 = r53237 * r53239;
return r53240;
}
double f(double kx, double ky, double th) {
double r53241 = th;
double r53242 = sin(r53241);
double r53243 = ky;
double r53244 = sin(r53243);
double r53245 = kx;
double r53246 = sin(r53245);
double r53247 = 2.0;
double r53248 = 2.0;
double r53249 = r53247 / r53248;
double r53250 = pow(r53246, r53249);
double r53251 = pow(r53244, r53249);
double r53252 = hypot(r53250, r53251);
double r53253 = r53244 / r53252;
double r53254 = 1.0;
double r53255 = sqrt(r53254);
double r53256 = r53253 * r53255;
double r53257 = r53242 * r53256;
return r53257;
}



Bits error versus kx



Bits error versus ky



Bits error versus th
Results
Initial program 12.5
rmApplied sqr-pow12.5
Applied sqr-pow12.5
Applied hypot-def8.9
rmApplied add-sqr-sqrt9.2
Applied *-un-lft-identity9.2
Applied times-frac9.2
rmApplied *-un-lft-identity9.2
Applied add-sqr-sqrt9.2
Applied times-frac9.2
Applied associate-*l*9.2
Simplified8.9
Final simplification8.9
herbie shell --seed 2020060 +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)))