Average Error: 15.2 → 1.2
Time: 24.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)}\]
\[e^{\left|m - n\right| - \mathsf{fma}\left(\frac{m + n}{2} - M, \frac{m + n}{2} - M, \ell\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)}
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 r3829881 = K;
        double r3829882 = m;
        double r3829883 = n;
        double r3829884 = r3829882 + r3829883;
        double r3829885 = r3829881 * r3829884;
        double r3829886 = 2.0;
        double r3829887 = r3829885 / r3829886;
        double r3829888 = M;
        double r3829889 = r3829887 - r3829888;
        double r3829890 = cos(r3829889);
        double r3829891 = r3829884 / r3829886;
        double r3829892 = r3829891 - r3829888;
        double r3829893 = pow(r3829892, r3829886);
        double r3829894 = -r3829893;
        double r3829895 = l;
        double r3829896 = r3829882 - r3829883;
        double r3829897 = fabs(r3829896);
        double r3829898 = r3829895 - r3829897;
        double r3829899 = r3829894 - r3829898;
        double r3829900 = exp(r3829899);
        double r3829901 = r3829890 * r3829900;
        return r3829901;
}

double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
        double r3829902 = m;
        double r3829903 = n;
        double r3829904 = r3829902 - r3829903;
        double r3829905 = fabs(r3829904);
        double r3829906 = r3829902 + r3829903;
        double r3829907 = 2.0;
        double r3829908 = r3829906 / r3829907;
        double r3829909 = M;
        double r3829910 = r3829908 - r3829909;
        double r3829911 = l;
        double r3829912 = fma(r3829910, r3829910, r3829911);
        double r3829913 = r3829905 - r3829912;
        double r3829914 = exp(r3829913);
        return r3829914;
}

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

    \[\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}{\cos \left(K \cdot \frac{m + n}{2} - M\right) \cdot e^{\left|m - n\right| - \mathsf{fma}\left(\frac{m + n}{2} - M, \frac{m + n}{2} - M, \ell\right)}}\]
  3. Taylor expanded around 0 1.2

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

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

Reproduce

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