\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{\left(\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\right) \cdot \frac{1}{2}}double f(double l, double Om, double kx, double ky) {
double r18949 = 1.0;
double r18950 = 2.0;
double r18951 = r18949 / r18950;
double r18952 = l;
double r18953 = r18950 * r18952;
double r18954 = Om;
double r18955 = r18953 / r18954;
double r18956 = pow(r18955, r18950);
double r18957 = kx;
double r18958 = sin(r18957);
double r18959 = pow(r18958, r18950);
double r18960 = ky;
double r18961 = sin(r18960);
double r18962 = pow(r18961, r18950);
double r18963 = r18959 + r18962;
double r18964 = r18956 * r18963;
double r18965 = r18949 + r18964;
double r18966 = sqrt(r18965);
double r18967 = r18949 / r18966;
double r18968 = r18949 + r18967;
double r18969 = r18951 * r18968;
double r18970 = sqrt(r18969);
return r18970;
}
double f(double l, double Om, double kx, double ky) {
double r18971 = 1.0;
double r18972 = 2.0;
double r18973 = l;
double r18974 = r18972 * r18973;
double r18975 = Om;
double r18976 = r18974 / r18975;
double r18977 = pow(r18976, r18972);
double r18978 = kx;
double r18979 = sin(r18978);
double r18980 = pow(r18979, r18972);
double r18981 = ky;
double r18982 = sin(r18981);
double r18983 = pow(r18982, r18972);
double r18984 = r18980 + r18983;
double r18985 = fma(r18977, r18984, r18971);
double r18986 = sqrt(r18985);
double r18987 = r18971 / r18986;
double r18988 = r18987 + r18971;
double r18989 = r18971 / r18972;
double r18990 = r18988 * r18989;
double r18991 = sqrt(r18990);
return r18991;
}



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 2019195 +o rules:numerics
(FPCore (l Om kx ky)
:name "Toniolo and Linder, Equation (3a)"
(sqrt (* (/ 1.0 2.0) (+ 1.0 (/ 1.0 (sqrt (+ 1.0 (* (pow (/ (* 2.0 l) Om) 2.0) (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0))))))))))