Average Error: 15.5 → 1.3
Time: 24.9s
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 r2628817 = K;
        double r2628818 = m;
        double r2628819 = n;
        double r2628820 = r2628818 + r2628819;
        double r2628821 = r2628817 * r2628820;
        double r2628822 = 2.0;
        double r2628823 = r2628821 / r2628822;
        double r2628824 = M;
        double r2628825 = r2628823 - r2628824;
        double r2628826 = cos(r2628825);
        double r2628827 = r2628820 / r2628822;
        double r2628828 = r2628827 - r2628824;
        double r2628829 = pow(r2628828, r2628822);
        double r2628830 = -r2628829;
        double r2628831 = l;
        double r2628832 = r2628818 - r2628819;
        double r2628833 = fabs(r2628832);
        double r2628834 = r2628831 - r2628833;
        double r2628835 = r2628830 - r2628834;
        double r2628836 = exp(r2628835);
        double r2628837 = r2628826 * r2628836;
        return r2628837;
}

double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
        double r2628838 = m;
        double r2628839 = n;
        double r2628840 = r2628838 - r2628839;
        double r2628841 = fabs(r2628840);
        double r2628842 = r2628838 + r2628839;
        double r2628843 = 2.0;
        double r2628844 = r2628842 / r2628843;
        double r2628845 = M;
        double r2628846 = r2628844 - r2628845;
        double r2628847 = l;
        double r2628848 = fma(r2628846, r2628846, r2628847);
        double r2628849 = r2628841 - r2628848;
        double r2628850 = exp(r2628849);
        return r2628850;
}

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

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

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

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

    \[\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 2019149 +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)))))))