\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)}\frac{1}{e^{{\left(\frac{m + n}{2} - M\right)}^{2} + \left(\ell - \left|m - n\right|\right)}}double f(double K, double m, double n, double M, double l) {
double r120971 = K;
double r120972 = m;
double r120973 = n;
double r120974 = r120972 + r120973;
double r120975 = r120971 * r120974;
double r120976 = 2.0;
double r120977 = r120975 / r120976;
double r120978 = M;
double r120979 = r120977 - r120978;
double r120980 = cos(r120979);
double r120981 = r120974 / r120976;
double r120982 = r120981 - r120978;
double r120983 = pow(r120982, r120976);
double r120984 = -r120983;
double r120985 = l;
double r120986 = r120972 - r120973;
double r120987 = fabs(r120986);
double r120988 = r120985 - r120987;
double r120989 = r120984 - r120988;
double r120990 = exp(r120989);
double r120991 = r120980 * r120990;
return r120991;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r120992 = 1.0;
double r120993 = m;
double r120994 = n;
double r120995 = r120993 + r120994;
double r120996 = 2.0;
double r120997 = r120995 / r120996;
double r120998 = M;
double r120999 = r120997 - r120998;
double r121000 = pow(r120999, r120996);
double r121001 = l;
double r121002 = r120993 - r120994;
double r121003 = fabs(r121002);
double r121004 = r121001 - r121003;
double r121005 = r121000 + r121004;
double r121006 = exp(r121005);
double r121007 = r120992 / r121006;
return r121007;
}



Bits error versus K



Bits error versus m



Bits error versus n



Bits error versus M



Bits error versus l
Results
Initial program 15.0
Simplified15.0
Taylor expanded around 0 1.4
Final simplification1.4
herbie shell --seed 2020064 +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)))))))