\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 r136485 = K;
double r136486 = m;
double r136487 = n;
double r136488 = r136486 + r136487;
double r136489 = r136485 * r136488;
double r136490 = 2.0;
double r136491 = r136489 / r136490;
double r136492 = M;
double r136493 = r136491 - r136492;
double r136494 = cos(r136493);
double r136495 = r136488 / r136490;
double r136496 = r136495 - r136492;
double r136497 = pow(r136496, r136490);
double r136498 = -r136497;
double r136499 = l;
double r136500 = r136486 - r136487;
double r136501 = fabs(r136500);
double r136502 = r136499 - r136501;
double r136503 = r136498 - r136502;
double r136504 = exp(r136503);
double r136505 = r136494 * r136504;
return r136505;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r136506 = m;
double r136507 = n;
double r136508 = r136506 + r136507;
double r136509 = 2.0;
double r136510 = r136508 / r136509;
double r136511 = M;
double r136512 = r136510 - r136511;
double r136513 = pow(r136512, r136509);
double r136514 = -r136513;
double r136515 = l;
double r136516 = r136506 - r136507;
double r136517 = fabs(r136516);
double r136518 = r136515 - r136517;
double r136519 = r136514 - r136518;
double r136520 = exp(r136519);
return r136520;
}



Bits error versus K



Bits error versus m



Bits error versus n



Bits error versus M



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