\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|m - n\right| - \mathsf{fma}\left(\frac{m + n}{2} - M, \frac{m + n}{2} - M, \ell\right)}double f(double K, double m, double n, double M, double l) {
double r4177483 = K;
double r4177484 = m;
double r4177485 = n;
double r4177486 = r4177484 + r4177485;
double r4177487 = r4177483 * r4177486;
double r4177488 = 2.0;
double r4177489 = r4177487 / r4177488;
double r4177490 = M;
double r4177491 = r4177489 - r4177490;
double r4177492 = cos(r4177491);
double r4177493 = r4177486 / r4177488;
double r4177494 = r4177493 - r4177490;
double r4177495 = pow(r4177494, r4177488);
double r4177496 = -r4177495;
double r4177497 = l;
double r4177498 = r4177484 - r4177485;
double r4177499 = fabs(r4177498);
double r4177500 = r4177497 - r4177499;
double r4177501 = r4177496 - r4177500;
double r4177502 = exp(r4177501);
double r4177503 = r4177492 * r4177502;
return r4177503;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r4177504 = m;
double r4177505 = n;
double r4177506 = r4177504 - r4177505;
double r4177507 = fabs(r4177506);
double r4177508 = r4177504 + r4177505;
double r4177509 = 2.0;
double r4177510 = r4177508 / r4177509;
double r4177511 = M;
double r4177512 = r4177510 - r4177511;
double r4177513 = l;
double r4177514 = fma(r4177512, r4177512, r4177513);
double r4177515 = r4177507 - r4177514;
double r4177516 = exp(r4177515);
return r4177516;
}



Bits error versus K



Bits error versus m



Bits error versus n



Bits error versus M



Bits error versus l
Initial program 16.0
Simplified16.0
Taylor expanded around 0 1.5
Final simplification1.5
herbie shell --seed 2019146 +o rules:numerics
(FPCore (K m n M l)
:name "Maksimov and Kolovsky, Equation (32)"
(* (cos (- (/ (* K (+ m n)) 2) M)) (exp (- (- (pow (- (/ (+ m n) 2) M) 2)) (- l (fabs (- m n)))))))