\cos \left(\frac{K \cdot \left(m + n\right)}{2} - M\right) \cdot e^{\left(-{\left(\frac{m + n}{2} - M\right)}^{2}\right) - \left(\ell - \left|m - n\right|\right)}e^{\left(-{\left(\frac{m + n}{2} - M\right)}^{2}\right) - \left(\ell - \left|m - n\right|\right)}double f(double K, double m, double n, double M, double l) {
double r91906 = K;
double r91907 = m;
double r91908 = n;
double r91909 = r91907 + r91908;
double r91910 = r91906 * r91909;
double r91911 = 2.0;
double r91912 = r91910 / r91911;
double r91913 = M;
double r91914 = r91912 - r91913;
double r91915 = cos(r91914);
double r91916 = r91909 / r91911;
double r91917 = r91916 - r91913;
double r91918 = pow(r91917, r91911);
double r91919 = -r91918;
double r91920 = l;
double r91921 = r91907 - r91908;
double r91922 = fabs(r91921);
double r91923 = r91920 - r91922;
double r91924 = r91919 - r91923;
double r91925 = exp(r91924);
double r91926 = r91915 * r91925;
return r91926;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r91927 = m;
double r91928 = n;
double r91929 = r91927 + r91928;
double r91930 = 2.0;
double r91931 = r91929 / r91930;
double r91932 = M;
double r91933 = r91931 - r91932;
double r91934 = pow(r91933, r91930);
double r91935 = -r91934;
double r91936 = l;
double r91937 = r91927 - r91928;
double r91938 = fabs(r91937);
double r91939 = r91936 - r91938;
double r91940 = r91935 - r91939;
double r91941 = exp(r91940);
return r91941;
}



Bits error versus K



Bits error versus m



Bits error versus n



Bits error versus M



Bits error versus l
Results
Initial program 14.7
Taylor expanded around 0 1.3
Final simplification1.3
herbie shell --seed 2019212 +o rules:numerics
(FPCore (K m n M l)
:name "Maksimov and Kolovsky, Equation (32)"
:precision binary64
(* (cos (- (/ (* K (+ m n)) 2) M)) (exp (- (- (pow (- (/ (+ m n) 2) M) 2)) (- l (fabs (- m n)))))))