\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\frac{\sin ky}{\sqrt{{\left(\sqrt[3]{\sin kx} \cdot \sqrt[3]{\sin kx}\right)}^{2} \cdot {\left(\left(\sqrt[3]{\sqrt[3]{\sin kx}} \cdot \sqrt[3]{\sqrt[3]{\sin kx}}\right) \cdot \sqrt[3]{\left(\sqrt[3]{\sqrt[3]{\sin kx}} \cdot \sqrt[3]{\sqrt[3]{\sin kx}}\right) \cdot \sqrt[3]{\sqrt[3]{\sin kx}}}\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin thdouble f(double kx, double ky, double th) {
double r35594 = ky;
double r35595 = sin(r35594);
double r35596 = kx;
double r35597 = sin(r35596);
double r35598 = 2.0;
double r35599 = pow(r35597, r35598);
double r35600 = pow(r35595, r35598);
double r35601 = r35599 + r35600;
double r35602 = sqrt(r35601);
double r35603 = r35595 / r35602;
double r35604 = th;
double r35605 = sin(r35604);
double r35606 = r35603 * r35605;
return r35606;
}
double f(double kx, double ky, double th) {
double r35607 = ky;
double r35608 = sin(r35607);
double r35609 = kx;
double r35610 = sin(r35609);
double r35611 = cbrt(r35610);
double r35612 = r35611 * r35611;
double r35613 = 2.0;
double r35614 = pow(r35612, r35613);
double r35615 = cbrt(r35611);
double r35616 = r35615 * r35615;
double r35617 = r35616 * r35615;
double r35618 = cbrt(r35617);
double r35619 = r35616 * r35618;
double r35620 = pow(r35619, r35613);
double r35621 = r35614 * r35620;
double r35622 = pow(r35608, r35613);
double r35623 = r35621 + r35622;
double r35624 = sqrt(r35623);
double r35625 = r35608 / r35624;
double r35626 = th;
double r35627 = sin(r35626);
double r35628 = r35625 * r35627;
return r35628;
}



Bits error versus kx



Bits error versus ky



Bits error versus th
Results
Initial program 12.8
rmApplied add-cube-cbrt13.0
Applied unpow-prod-down13.0
rmApplied add-cube-cbrt13.0
rmApplied add-cube-cbrt13.1
Final simplification13.1
herbie shell --seed 2019362
(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)))