\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 r138514 = K;
double r138515 = m;
double r138516 = n;
double r138517 = r138515 + r138516;
double r138518 = r138514 * r138517;
double r138519 = 2.0;
double r138520 = r138518 / r138519;
double r138521 = M;
double r138522 = r138520 - r138521;
double r138523 = cos(r138522);
double r138524 = r138517 / r138519;
double r138525 = r138524 - r138521;
double r138526 = pow(r138525, r138519);
double r138527 = -r138526;
double r138528 = l;
double r138529 = r138515 - r138516;
double r138530 = fabs(r138529);
double r138531 = r138528 - r138530;
double r138532 = r138527 - r138531;
double r138533 = exp(r138532);
double r138534 = r138523 * r138533;
return r138534;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r138535 = m;
double r138536 = n;
double r138537 = r138535 + r138536;
double r138538 = 2.0;
double r138539 = r138537 / r138538;
double r138540 = M;
double r138541 = r138539 - r138540;
double r138542 = pow(r138541, r138538);
double r138543 = -r138542;
double r138544 = l;
double r138545 = r138535 - r138536;
double r138546 = fabs(r138545);
double r138547 = r138544 - r138546;
double r138548 = r138543 - r138547;
double r138549 = exp(r138548);
return r138549;
}



Bits error versus K



Bits error versus m



Bits error versus n



Bits error versus M



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