\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 r117311 = K;
double r117312 = m;
double r117313 = n;
double r117314 = r117312 + r117313;
double r117315 = r117311 * r117314;
double r117316 = 2.0;
double r117317 = r117315 / r117316;
double r117318 = M;
double r117319 = r117317 - r117318;
double r117320 = cos(r117319);
double r117321 = r117314 / r117316;
double r117322 = r117321 - r117318;
double r117323 = pow(r117322, r117316);
double r117324 = -r117323;
double r117325 = l;
double r117326 = r117312 - r117313;
double r117327 = fabs(r117326);
double r117328 = r117325 - r117327;
double r117329 = r117324 - r117328;
double r117330 = exp(r117329);
double r117331 = r117320 * r117330;
return r117331;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r117332 = m;
double r117333 = n;
double r117334 = r117332 + r117333;
double r117335 = 2.0;
double r117336 = r117334 / r117335;
double r117337 = M;
double r117338 = r117336 - r117337;
double r117339 = pow(r117338, r117335);
double r117340 = -r117339;
double r117341 = l;
double r117342 = r117332 - r117333;
double r117343 = fabs(r117342);
double r117344 = r117341 - r117343;
double r117345 = r117340 - r117344;
double r117346 = exp(r117345);
return r117346;
}



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
(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)))))))