\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|m - n\right| - \ell\right) - {\left(\frac{m + n}{2} - M\right)}^{2}}double f(double K, double m, double n, double M, double l) {
double r4214047 = K;
double r4214048 = m;
double r4214049 = n;
double r4214050 = r4214048 + r4214049;
double r4214051 = r4214047 * r4214050;
double r4214052 = 2.0;
double r4214053 = r4214051 / r4214052;
double r4214054 = M;
double r4214055 = r4214053 - r4214054;
double r4214056 = cos(r4214055);
double r4214057 = r4214050 / r4214052;
double r4214058 = r4214057 - r4214054;
double r4214059 = pow(r4214058, r4214052);
double r4214060 = -r4214059;
double r4214061 = l;
double r4214062 = r4214048 - r4214049;
double r4214063 = fabs(r4214062);
double r4214064 = r4214061 - r4214063;
double r4214065 = r4214060 - r4214064;
double r4214066 = exp(r4214065);
double r4214067 = r4214056 * r4214066;
return r4214067;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r4214068 = m;
double r4214069 = n;
double r4214070 = r4214068 - r4214069;
double r4214071 = fabs(r4214070);
double r4214072 = l;
double r4214073 = r4214071 - r4214072;
double r4214074 = r4214068 + r4214069;
double r4214075 = 2.0;
double r4214076 = r4214074 / r4214075;
double r4214077 = M;
double r4214078 = r4214076 - r4214077;
double r4214079 = pow(r4214078, r4214075);
double r4214080 = r4214073 - r4214079;
double r4214081 = exp(r4214080);
return r4214081;
}



Bits error versus K



Bits error versus m



Bits error versus n



Bits error versus M



Bits error versus l
Results
Initial program 15.6
Simplified15.6
Taylor expanded around 0 1.4
Final simplification1.4
herbie shell --seed 2019172 +o rules:numerics
(FPCore (K m n M l)
:name "Maksimov and Kolovsky, Equation (32)"
(* (cos (- (/ (* K (+ m n)) 2.0) M)) (exp (- (- (pow (- (/ (+ m n) 2.0) M) 2.0)) (- l (fabs (- m n)))))))