\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)}\frac{1}{e^{{\left(\frac{m + n}{2} - M\right)}^{2} + \left(\ell - \left|m - n\right|\right)}}double f(double K, double m, double n, double M, double l) {
double r233564 = K;
double r233565 = m;
double r233566 = n;
double r233567 = r233565 + r233566;
double r233568 = r233564 * r233567;
double r233569 = 2.0;
double r233570 = r233568 / r233569;
double r233571 = M;
double r233572 = r233570 - r233571;
double r233573 = cos(r233572);
double r233574 = r233567 / r233569;
double r233575 = r233574 - r233571;
double r233576 = pow(r233575, r233569);
double r233577 = -r233576;
double r233578 = l;
double r233579 = r233565 - r233566;
double r233580 = fabs(r233579);
double r233581 = r233578 - r233580;
double r233582 = r233577 - r233581;
double r233583 = exp(r233582);
double r233584 = r233573 * r233583;
return r233584;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r233585 = 1.0;
double r233586 = m;
double r233587 = n;
double r233588 = r233586 + r233587;
double r233589 = 2.0;
double r233590 = r233588 / r233589;
double r233591 = M;
double r233592 = r233590 - r233591;
double r233593 = pow(r233592, r233589);
double r233594 = l;
double r233595 = r233586 - r233587;
double r233596 = fabs(r233595);
double r233597 = r233594 - r233596;
double r233598 = r233593 + r233597;
double r233599 = exp(r233598);
double r233600 = r233585 / r233599;
return r233600;
}



Bits error versus K



Bits error versus m



Bits error versus n



Bits error versus M



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