Average Error: 15.3 → 1.4
Time: 45.2s
Precision: 64
\[\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)}\]
\[\frac{1}{e^{\mathsf{fma}\left(\left(\frac{m + n}{2} - M\right), \left(\frac{m + n}{2} - M\right), \ell\right) - \left|m - n\right|}}\]
\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)}
\frac{1}{e^{\mathsf{fma}\left(\left(\frac{m + n}{2} - M\right), \left(\frac{m + n}{2} - M\right), \ell\right) - \left|m - n\right|}}
double f(double K, double m, double n, double M, double l) {
        double r19303983 = K;
        double r19303984 = m;
        double r19303985 = n;
        double r19303986 = r19303984 + r19303985;
        double r19303987 = r19303983 * r19303986;
        double r19303988 = 2.0;
        double r19303989 = r19303987 / r19303988;
        double r19303990 = M;
        double r19303991 = r19303989 - r19303990;
        double r19303992 = cos(r19303991);
        double r19303993 = r19303986 / r19303988;
        double r19303994 = r19303993 - r19303990;
        double r19303995 = pow(r19303994, r19303988);
        double r19303996 = -r19303995;
        double r19303997 = l;
        double r19303998 = r19303984 - r19303985;
        double r19303999 = fabs(r19303998);
        double r19304000 = r19303997 - r19303999;
        double r19304001 = r19303996 - r19304000;
        double r19304002 = exp(r19304001);
        double r19304003 = r19303992 * r19304002;
        return r19304003;
}

double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
        double r19304004 = 1.0;
        double r19304005 = m;
        double r19304006 = n;
        double r19304007 = r19304005 + r19304006;
        double r19304008 = 2.0;
        double r19304009 = r19304007 / r19304008;
        double r19304010 = M;
        double r19304011 = r19304009 - r19304010;
        double r19304012 = l;
        double r19304013 = fma(r19304011, r19304011, r19304012);
        double r19304014 = r19304005 - r19304006;
        double r19304015 = fabs(r19304014);
        double r19304016 = r19304013 - r19304015;
        double r19304017 = exp(r19304016);
        double r19304018 = r19304004 / r19304017;
        return r19304018;
}

Error

Bits error versus K

Bits error versus m

Bits error versus n

Bits error versus M

Bits error versus l

Derivation

  1. Initial program 15.3

    \[\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)}\]
  2. Simplified15.3

    \[\leadsto \color{blue}{\frac{\cos \left(\frac{K}{2} \cdot \left(m + n\right) - M\right)}{e^{\mathsf{fma}\left(\left(\frac{m + n}{2} - M\right), \left(\frac{m + n}{2} - M\right), \ell\right) - \left|m - n\right|}}}\]
  3. Taylor expanded around 0 1.4

    \[\leadsto \frac{\color{blue}{1}}{e^{\mathsf{fma}\left(\left(\frac{m + n}{2} - M\right), \left(\frac{m + n}{2} - M\right), \ell\right) - \left|m - n\right|}}\]
  4. Final simplification1.4

    \[\leadsto \frac{1}{e^{\mathsf{fma}\left(\left(\frac{m + n}{2} - M\right), \left(\frac{m + n}{2} - M\right), \ell\right) - \left|m - n\right|}}\]

Reproduce

herbie shell --seed 2019120 +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)))))))