\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|m - n\right| - \ell\right) - {\left(\frac{m + n}{2} - M\right)}^{2}}double f(double K, double m, double n, double M, double l) {
double r4148500 = K;
double r4148501 = m;
double r4148502 = n;
double r4148503 = r4148501 + r4148502;
double r4148504 = r4148500 * r4148503;
double r4148505 = 2.0;
double r4148506 = r4148504 / r4148505;
double r4148507 = M;
double r4148508 = r4148506 - r4148507;
double r4148509 = cos(r4148508);
double r4148510 = r4148503 / r4148505;
double r4148511 = r4148510 - r4148507;
double r4148512 = pow(r4148511, r4148505);
double r4148513 = -r4148512;
double r4148514 = l;
double r4148515 = r4148501 - r4148502;
double r4148516 = fabs(r4148515);
double r4148517 = r4148514 - r4148516;
double r4148518 = r4148513 - r4148517;
double r4148519 = exp(r4148518);
double r4148520 = r4148509 * r4148519;
return r4148520;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r4148521 = m;
double r4148522 = n;
double r4148523 = r4148521 - r4148522;
double r4148524 = fabs(r4148523);
double r4148525 = l;
double r4148526 = r4148524 - r4148525;
double r4148527 = r4148521 + r4148522;
double r4148528 = 2.0;
double r4148529 = r4148527 / r4148528;
double r4148530 = M;
double r4148531 = r4148529 - r4148530;
double r4148532 = pow(r4148531, r4148528);
double r4148533 = r4148526 - r4148532;
double r4148534 = exp(r4148533);
return r4148534;
}



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
Simplified15.6
Taylor expanded around 0 1.4
Final simplification1.4
herbie shell --seed 2019172 +o rules:numerics
(FPCore (K m n M l)
:name "Maksimov and Kolovsky, Equation (32)"
(* (cos (- (/ (* K (+ m n)) 2.0) M)) (exp (- (- (pow (- (/ (+ m n) 2.0) M) 2.0)) (- l (fabs (- m n)))))))