Average Error: 15.1 → 1.3
Time: 30.5s
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^{(\left(\frac{m + n}{2} - M\right) \cdot \left(\frac{m + n}{2} - M\right) + \ell)_* - \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^{(\left(\frac{m + n}{2} - M\right) \cdot \left(\frac{m + n}{2} - M\right) + \ell)_* - \left|m - n\right|}}
double f(double K, double m, double n, double M, double l) {
        double r20677858 = K;
        double r20677859 = m;
        double r20677860 = n;
        double r20677861 = r20677859 + r20677860;
        double r20677862 = r20677858 * r20677861;
        double r20677863 = 2.0;
        double r20677864 = r20677862 / r20677863;
        double r20677865 = M;
        double r20677866 = r20677864 - r20677865;
        double r20677867 = cos(r20677866);
        double r20677868 = r20677861 / r20677863;
        double r20677869 = r20677868 - r20677865;
        double r20677870 = pow(r20677869, r20677863);
        double r20677871 = -r20677870;
        double r20677872 = l;
        double r20677873 = r20677859 - r20677860;
        double r20677874 = fabs(r20677873);
        double r20677875 = r20677872 - r20677874;
        double r20677876 = r20677871 - r20677875;
        double r20677877 = exp(r20677876);
        double r20677878 = r20677867 * r20677877;
        return r20677878;
}

double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
        double r20677879 = 1.0;
        double r20677880 = m;
        double r20677881 = n;
        double r20677882 = r20677880 + r20677881;
        double r20677883 = 2.0;
        double r20677884 = r20677882 / r20677883;
        double r20677885 = M;
        double r20677886 = r20677884 - r20677885;
        double r20677887 = l;
        double r20677888 = fma(r20677886, r20677886, r20677887);
        double r20677889 = r20677880 - r20677881;
        double r20677890 = fabs(r20677889);
        double r20677891 = r20677888 - r20677890;
        double r20677892 = exp(r20677891);
        double r20677893 = r20677879 / r20677892;
        return r20677893;
}

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.1

    \[\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.1

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

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

    \[\leadsto \frac{1}{e^{(\left(\frac{m + n}{2} - M\right) \cdot \left(\frac{m + n}{2} - M\right) + \ell)_* - \left|m - n\right|}}\]

Reproduce

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