\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 r120394 = K;
double r120395 = m;
double r120396 = n;
double r120397 = r120395 + r120396;
double r120398 = r120394 * r120397;
double r120399 = 2.0;
double r120400 = r120398 / r120399;
double r120401 = M;
double r120402 = r120400 - r120401;
double r120403 = cos(r120402);
double r120404 = r120397 / r120399;
double r120405 = r120404 - r120401;
double r120406 = pow(r120405, r120399);
double r120407 = -r120406;
double r120408 = l;
double r120409 = r120395 - r120396;
double r120410 = fabs(r120409);
double r120411 = r120408 - r120410;
double r120412 = r120407 - r120411;
double r120413 = exp(r120412);
double r120414 = r120403 * r120413;
return r120414;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r120415 = m;
double r120416 = n;
double r120417 = r120415 + r120416;
double r120418 = 2.0;
double r120419 = r120417 / r120418;
double r120420 = M;
double r120421 = r120419 - r120420;
double r120422 = pow(r120421, r120418);
double r120423 = -r120422;
double r120424 = l;
double r120425 = r120415 - r120416;
double r120426 = fabs(r120425);
double r120427 = r120424 - r120426;
double r120428 = r120423 - r120427;
double r120429 = exp(r120428);
return r120429;
}



Bits error versus K



Bits error versus m



Bits error versus n



Bits error versus M



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