Average Error: 15.3 → 1.5
Time: 18.7s
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(\left|m - n\right| - \mathsf{fma}\left(\left(\frac{m + n}{2} - M\right), \left(\frac{m + n}{2} - M\right), \ell\right)\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(\left|m - n\right| - \mathsf{fma}\left(\left(\frac{m + n}{2} - M\right), \left(\frac{m + n}{2} - M\right), \ell\right)\right)}
double f(double K, double m, double n, double M, double l) {
        double r1725680 = K;
        double r1725681 = m;
        double r1725682 = n;
        double r1725683 = r1725681 + r1725682;
        double r1725684 = r1725680 * r1725683;
        double r1725685 = 2.0;
        double r1725686 = r1725684 / r1725685;
        double r1725687 = M;
        double r1725688 = r1725686 - r1725687;
        double r1725689 = cos(r1725688);
        double r1725690 = r1725683 / r1725685;
        double r1725691 = r1725690 - r1725687;
        double r1725692 = pow(r1725691, r1725685);
        double r1725693 = -r1725692;
        double r1725694 = l;
        double r1725695 = r1725681 - r1725682;
        double r1725696 = fabs(r1725695);
        double r1725697 = r1725694 - r1725696;
        double r1725698 = r1725693 - r1725697;
        double r1725699 = exp(r1725698);
        double r1725700 = r1725689 * r1725699;
        return r1725700;
}

double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
        double r1725701 = exp(1.0);
        double r1725702 = m;
        double r1725703 = n;
        double r1725704 = r1725702 - r1725703;
        double r1725705 = fabs(r1725704);
        double r1725706 = r1725702 + r1725703;
        double r1725707 = 2.0;
        double r1725708 = r1725706 / r1725707;
        double r1725709 = M;
        double r1725710 = r1725708 - r1725709;
        double r1725711 = l;
        double r1725712 = fma(r1725710, r1725710, r1725711);
        double r1725713 = r1725705 - r1725712;
        double r1725714 = pow(r1725701, r1725713);
        return r1725714;
}

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

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

    \[\leadsto e^{\left|m - n\right| - \mathsf{fma}\left(\left(\frac{m + n}{2} - M\right), \left(\frac{m + n}{2} - M\right), \ell\right)} \cdot \color{blue}{1}\]
  4. Using strategy rm
  5. Applied *-un-lft-identity1.5

    \[\leadsto e^{\color{blue}{1 \cdot \left(\left|m - n\right| - \mathsf{fma}\left(\left(\frac{m + n}{2} - M\right), \left(\frac{m + n}{2} - M\right), \ell\right)\right)}} \cdot 1\]
  6. Applied exp-prod1.5

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

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

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

Reproduce

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