\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 r117213 = K;
double r117214 = m;
double r117215 = n;
double r117216 = r117214 + r117215;
double r117217 = r117213 * r117216;
double r117218 = 2.0;
double r117219 = r117217 / r117218;
double r117220 = M;
double r117221 = r117219 - r117220;
double r117222 = cos(r117221);
double r117223 = r117216 / r117218;
double r117224 = r117223 - r117220;
double r117225 = pow(r117224, r117218);
double r117226 = -r117225;
double r117227 = l;
double r117228 = r117214 - r117215;
double r117229 = fabs(r117228);
double r117230 = r117227 - r117229;
double r117231 = r117226 - r117230;
double r117232 = exp(r117231);
double r117233 = r117222 * r117232;
return r117233;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r117234 = m;
double r117235 = n;
double r117236 = r117234 + r117235;
double r117237 = 2.0;
double r117238 = r117236 / r117237;
double r117239 = M;
double r117240 = r117238 - r117239;
double r117241 = pow(r117240, r117237);
double r117242 = -r117241;
double r117243 = l;
double r117244 = r117234 - r117235;
double r117245 = fabs(r117244);
double r117246 = r117243 - r117245;
double r117247 = r117242 - r117246;
double r117248 = exp(r117247);
return r117248;
}



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.3
Final simplification1.3
herbie shell --seed 2019351 +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)))))))