\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 r149820 = K;
double r149821 = m;
double r149822 = n;
double r149823 = r149821 + r149822;
double r149824 = r149820 * r149823;
double r149825 = 2.0;
double r149826 = r149824 / r149825;
double r149827 = M;
double r149828 = r149826 - r149827;
double r149829 = cos(r149828);
double r149830 = r149823 / r149825;
double r149831 = r149830 - r149827;
double r149832 = pow(r149831, r149825);
double r149833 = -r149832;
double r149834 = l;
double r149835 = r149821 - r149822;
double r149836 = fabs(r149835);
double r149837 = r149834 - r149836;
double r149838 = r149833 - r149837;
double r149839 = exp(r149838);
double r149840 = r149829 * r149839;
return r149840;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r149841 = m;
double r149842 = n;
double r149843 = r149841 + r149842;
double r149844 = 2.0;
double r149845 = r149843 / r149844;
double r149846 = M;
double r149847 = r149845 - r149846;
double r149848 = pow(r149847, r149844);
double r149849 = -r149848;
double r149850 = l;
double r149851 = r149841 - r149842;
double r149852 = fabs(r149851);
double r149853 = r149850 - r149852;
double r149854 = r149849 - r149853;
double r149855 = exp(r149854);
return r149855;
}



Bits error versus K



Bits error versus m



Bits error versus n



Bits error versus M



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