\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 r111594 = K;
double r111595 = m;
double r111596 = n;
double r111597 = r111595 + r111596;
double r111598 = r111594 * r111597;
double r111599 = 2.0;
double r111600 = r111598 / r111599;
double r111601 = M;
double r111602 = r111600 - r111601;
double r111603 = cos(r111602);
double r111604 = r111597 / r111599;
double r111605 = r111604 - r111601;
double r111606 = pow(r111605, r111599);
double r111607 = -r111606;
double r111608 = l;
double r111609 = r111595 - r111596;
double r111610 = fabs(r111609);
double r111611 = r111608 - r111610;
double r111612 = r111607 - r111611;
double r111613 = exp(r111612);
double r111614 = r111603 * r111613;
return r111614;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r111615 = m;
double r111616 = n;
double r111617 = r111615 + r111616;
double r111618 = 2.0;
double r111619 = r111617 / r111618;
double r111620 = M;
double r111621 = r111619 - r111620;
double r111622 = pow(r111621, r111618);
double r111623 = -r111622;
double r111624 = l;
double r111625 = r111615 - r111616;
double r111626 = fabs(r111625);
double r111627 = r111624 - r111626;
double r111628 = r111623 - r111627;
double r111629 = exp(r111628);
return r111629;
}



Bits error versus K



Bits error versus m



Bits error versus n



Bits error versus M



Bits error versus l
Results
Initial program 15.6
Taylor expanded around 0 1.5
Final simplification1.5
herbie shell --seed 2019209 +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)))))))