\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 r179748 = K;
double r179749 = m;
double r179750 = n;
double r179751 = r179749 + r179750;
double r179752 = r179748 * r179751;
double r179753 = 2.0;
double r179754 = r179752 / r179753;
double r179755 = M;
double r179756 = r179754 - r179755;
double r179757 = cos(r179756);
double r179758 = r179751 / r179753;
double r179759 = r179758 - r179755;
double r179760 = pow(r179759, r179753);
double r179761 = -r179760;
double r179762 = l;
double r179763 = r179749 - r179750;
double r179764 = fabs(r179763);
double r179765 = r179762 - r179764;
double r179766 = r179761 - r179765;
double r179767 = exp(r179766);
double r179768 = r179757 * r179767;
return r179768;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r179769 = 1.0;
double r179770 = m;
double r179771 = n;
double r179772 = r179770 + r179771;
double r179773 = 2.0;
double r179774 = r179772 / r179773;
double r179775 = M;
double r179776 = r179774 - r179775;
double r179777 = pow(r179776, r179773);
double r179778 = l;
double r179779 = r179770 - r179771;
double r179780 = fabs(r179779);
double r179781 = r179778 - r179780;
double r179782 = r179777 + r179781;
double r179783 = exp(r179782);
double r179784 = r179769 / r179783;
return r179784;
}



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