double f(double kx, double ky, double th) {
double r1513698 = ky;
double r1513699 = sin(r1513698);
double r1513700 = kx;
double r1513701 = sin(r1513700);
double r1513702 = 2.0;
double r1513703 = pow(r1513701, r1513702);
double r1513704 = pow(r1513699, r1513702);
double r1513705 = r1513703 + r1513704;
double r1513706 = sqrt(r1513705);
double r1513707 = r1513699 / r1513706;
double r1513708 = th;
double r1513709 = sin(r1513708);
double r1513710 = r1513707 * r1513709;
return r1513710;
}
double f(double kx, double ky, double th) {
double r1513711 = th;
double r1513712 = sin(r1513711);
double r1513713 = ky;
double r1513714 = sin(r1513713);
double r1513715 = kx;
double r1513716 = sin(r1513715);
double r1513717 = hypot(r1513716, r1513714);
double r1513718 = r1513714 / r1513717;
double r1513719 = log1p(r1513718);
double r1513720 = expm1(r1513719);
double r1513721 = r1513712 * r1513720;
double r1513722 = expm1(r1513721);
double r1513723 = log1p(r1513722);
return r1513723;
}
\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\log_* (1 + (e^{\sin th \cdot (e^{\log_* (1 + \frac{\sin ky}{\sqrt{\left(\sin kx\right)^2 + \left(\sin ky\right)^2}^*})} - 1)^*} - 1)^*)


Bits error versus kx



Bits error versus ky



Bits error versus th
Initial program 12.5
Simplified8.9
rmApplied expm1-log1p-u8.9
rmApplied log1p-expm1-u9.0
Final simplification9.0
herbie shell --seed 2019101 +o rules:numerics
(FPCore (kx ky th)
:name "Toniolo and Linder, Equation (3b), real"
(* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)))