\sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}\right)}\sqrt{\frac{1}{\frac{2}{\frac{1}{\sqrt{\mathsf{fma}\left({\left(\frac{2 \cdot \ell}{Om}\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)}} + 1}}}double f(double l, double Om, double kx, double ky) {
double r27023 = 1.0;
double r27024 = 2.0;
double r27025 = r27023 / r27024;
double r27026 = l;
double r27027 = r27024 * r27026;
double r27028 = Om;
double r27029 = r27027 / r27028;
double r27030 = pow(r27029, r27024);
double r27031 = kx;
double r27032 = sin(r27031);
double r27033 = pow(r27032, r27024);
double r27034 = ky;
double r27035 = sin(r27034);
double r27036 = pow(r27035, r27024);
double r27037 = r27033 + r27036;
double r27038 = r27030 * r27037;
double r27039 = r27023 + r27038;
double r27040 = sqrt(r27039);
double r27041 = r27023 / r27040;
double r27042 = r27023 + r27041;
double r27043 = r27025 * r27042;
double r27044 = sqrt(r27043);
return r27044;
}
double f(double l, double Om, double kx, double ky) {
double r27045 = 1.0;
double r27046 = 2.0;
double r27047 = l;
double r27048 = r27046 * r27047;
double r27049 = Om;
double r27050 = r27048 / r27049;
double r27051 = pow(r27050, r27046);
double r27052 = kx;
double r27053 = sin(r27052);
double r27054 = pow(r27053, r27046);
double r27055 = ky;
double r27056 = sin(r27055);
double r27057 = pow(r27056, r27046);
double r27058 = r27054 + r27057;
double r27059 = fma(r27051, r27058, r27045);
double r27060 = sqrt(r27059);
double r27061 = r27045 / r27060;
double r27062 = r27061 + r27045;
double r27063 = r27046 / r27062;
double r27064 = r27045 / r27063;
double r27065 = sqrt(r27064);
return r27065;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Initial program 1.7
Simplified1.7
Final simplification1.7
herbie shell --seed 2019212 +o rules:numerics
(FPCore (l Om kx ky)
:name "Toniolo and Linder, Equation (3a)"
:precision binary64
(sqrt (* (/ 1 2) (+ 1 (/ 1 (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))