Average Error: 15.1 → 1.3
Time: 22.3s
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 r2569726 = K;
        double r2569727 = m;
        double r2569728 = n;
        double r2569729 = r2569727 + r2569728;
        double r2569730 = r2569726 * r2569729;
        double r2569731 = 2.0;
        double r2569732 = r2569730 / r2569731;
        double r2569733 = M;
        double r2569734 = r2569732 - r2569733;
        double r2569735 = cos(r2569734);
        double r2569736 = r2569729 / r2569731;
        double r2569737 = r2569736 - r2569733;
        double r2569738 = pow(r2569737, r2569731);
        double r2569739 = -r2569738;
        double r2569740 = l;
        double r2569741 = r2569727 - r2569728;
        double r2569742 = fabs(r2569741);
        double r2569743 = r2569740 - r2569742;
        double r2569744 = r2569739 - r2569743;
        double r2569745 = exp(r2569744);
        double r2569746 = r2569735 * r2569745;
        return r2569746;
}

double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
        double r2569747 = m;
        double r2569748 = n;
        double r2569749 = r2569747 - r2569748;
        double r2569750 = fabs(r2569749);
        double r2569751 = r2569747 + r2569748;
        double r2569752 = 2.0;
        double r2569753 = r2569751 / r2569752;
        double r2569754 = M;
        double r2569755 = r2569753 - r2569754;
        double r2569756 = l;
        double r2569757 = fma(r2569755, r2569755, r2569756);
        double r2569758 = r2569750 - r2569757;
        double r2569759 = exp(r2569758);
        return r2569759;
}

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}{\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 2019141 +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)))))))