\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 r142803 = K;
double r142804 = m;
double r142805 = n;
double r142806 = r142804 + r142805;
double r142807 = r142803 * r142806;
double r142808 = 2.0;
double r142809 = r142807 / r142808;
double r142810 = M;
double r142811 = r142809 - r142810;
double r142812 = cos(r142811);
double r142813 = r142806 / r142808;
double r142814 = r142813 - r142810;
double r142815 = pow(r142814, r142808);
double r142816 = -r142815;
double r142817 = l;
double r142818 = r142804 - r142805;
double r142819 = fabs(r142818);
double r142820 = r142817 - r142819;
double r142821 = r142816 - r142820;
double r142822 = exp(r142821);
double r142823 = r142812 * r142822;
return r142823;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r142824 = m;
double r142825 = n;
double r142826 = r142824 + r142825;
double r142827 = 2.0;
double r142828 = r142826 / r142827;
double r142829 = M;
double r142830 = r142828 - r142829;
double r142831 = pow(r142830, r142827);
double r142832 = -r142831;
double r142833 = l;
double r142834 = r142824 - r142825;
double r142835 = fabs(r142834);
double r142836 = r142833 - r142835;
double r142837 = r142832 - r142836;
double r142838 = exp(r142837);
return r142838;
}



Bits error versus K



Bits error versus m



Bits error versus n



Bits error versus M



Bits error versus l
Results
Initial program 15.7
Taylor expanded around 0 1.2
Final simplification1.2
herbie shell --seed 2019353 +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)))))))