\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 r114019 = K;
double r114020 = m;
double r114021 = n;
double r114022 = r114020 + r114021;
double r114023 = r114019 * r114022;
double r114024 = 2.0;
double r114025 = r114023 / r114024;
double r114026 = M;
double r114027 = r114025 - r114026;
double r114028 = cos(r114027);
double r114029 = r114022 / r114024;
double r114030 = r114029 - r114026;
double r114031 = pow(r114030, r114024);
double r114032 = -r114031;
double r114033 = l;
double r114034 = r114020 - r114021;
double r114035 = fabs(r114034);
double r114036 = r114033 - r114035;
double r114037 = r114032 - r114036;
double r114038 = exp(r114037);
double r114039 = r114028 * r114038;
return r114039;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r114040 = m;
double r114041 = n;
double r114042 = r114040 + r114041;
double r114043 = 2.0;
double r114044 = r114042 / r114043;
double r114045 = M;
double r114046 = r114044 - r114045;
double r114047 = pow(r114046, r114043);
double r114048 = -r114047;
double r114049 = l;
double r114050 = r114040 - r114041;
double r114051 = fabs(r114050);
double r114052 = r114049 - r114051;
double r114053 = r114048 - r114052;
double r114054 = exp(r114053);
return r114054;
}



Bits error versus K



Bits error versus m



Bits error versus n



Bits error versus M



Bits error versus l
Results
Initial program 15.3
Taylor expanded around 0 1.6
Final simplification1.6
herbie shell --seed 2020062 +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)))))))