\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 r244911 = K;
double r244912 = m;
double r244913 = n;
double r244914 = r244912 + r244913;
double r244915 = r244911 * r244914;
double r244916 = 2.0;
double r244917 = r244915 / r244916;
double r244918 = M;
double r244919 = r244917 - r244918;
double r244920 = cos(r244919);
double r244921 = r244914 / r244916;
double r244922 = r244921 - r244918;
double r244923 = pow(r244922, r244916);
double r244924 = -r244923;
double r244925 = l;
double r244926 = r244912 - r244913;
double r244927 = fabs(r244926);
double r244928 = r244925 - r244927;
double r244929 = r244924 - r244928;
double r244930 = exp(r244929);
double r244931 = r244920 * r244930;
return r244931;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r244932 = m;
double r244933 = n;
double r244934 = r244932 + r244933;
double r244935 = 2.0;
double r244936 = r244934 / r244935;
double r244937 = M;
double r244938 = r244936 - r244937;
double r244939 = pow(r244938, r244935);
double r244940 = -r244939;
double r244941 = l;
double r244942 = r244932 - r244933;
double r244943 = fabs(r244942);
double r244944 = r244941 - r244943;
double r244945 = r244940 - r244944;
double r244946 = exp(r244945);
return r244946;
}



Bits error versus K



Bits error versus m



Bits error versus n



Bits error versus M



Bits error versus l
Results
Initial program 15.2
Taylor expanded around 0 1.3
Final simplification1.3
herbie shell --seed 2020047
(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)))))))