\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 r127283 = K;
double r127284 = m;
double r127285 = n;
double r127286 = r127284 + r127285;
double r127287 = r127283 * r127286;
double r127288 = 2.0;
double r127289 = r127287 / r127288;
double r127290 = M;
double r127291 = r127289 - r127290;
double r127292 = cos(r127291);
double r127293 = r127286 / r127288;
double r127294 = r127293 - r127290;
double r127295 = pow(r127294, r127288);
double r127296 = -r127295;
double r127297 = l;
double r127298 = r127284 - r127285;
double r127299 = fabs(r127298);
double r127300 = r127297 - r127299;
double r127301 = r127296 - r127300;
double r127302 = exp(r127301);
double r127303 = r127292 * r127302;
return r127303;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r127304 = m;
double r127305 = n;
double r127306 = r127304 + r127305;
double r127307 = 2.0;
double r127308 = r127306 / r127307;
double r127309 = M;
double r127310 = r127308 - r127309;
double r127311 = pow(r127310, r127307);
double r127312 = -r127311;
double r127313 = l;
double r127314 = r127304 - r127305;
double r127315 = fabs(r127314);
double r127316 = r127313 - r127315;
double r127317 = r127312 - r127316;
double r127318 = exp(r127317);
return r127318;
}



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)))))))