Average Error: 15.5 → 1.5
Time: 23.1s
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^{\mathsf{fma}\left(\left(\sqrt{\left|m - n\right|}\right), \left(\sqrt{\left|m - n\right|}\right), \left(-\mathsf{fma}\left(\left(\frac{n + m}{2} - M\right), \left(\frac{n + m}{2} - M\right), \ell\right)\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^{\mathsf{fma}\left(\left(\sqrt{\left|m - n\right|}\right), \left(\sqrt{\left|m - n\right|}\right), \left(-\mathsf{fma}\left(\left(\frac{n + m}{2} - M\right), \left(\frac{n + m}{2} - M\right), \ell\right)\right)\right)}
double f(double K, double m, double n, double M, double l) {
        double r4841477 = K;
        double r4841478 = m;
        double r4841479 = n;
        double r4841480 = r4841478 + r4841479;
        double r4841481 = r4841477 * r4841480;
        double r4841482 = 2.0;
        double r4841483 = r4841481 / r4841482;
        double r4841484 = M;
        double r4841485 = r4841483 - r4841484;
        double r4841486 = cos(r4841485);
        double r4841487 = r4841480 / r4841482;
        double r4841488 = r4841487 - r4841484;
        double r4841489 = pow(r4841488, r4841482);
        double r4841490 = -r4841489;
        double r4841491 = l;
        double r4841492 = r4841478 - r4841479;
        double r4841493 = fabs(r4841492);
        double r4841494 = r4841491 - r4841493;
        double r4841495 = r4841490 - r4841494;
        double r4841496 = exp(r4841495);
        double r4841497 = r4841486 * r4841496;
        return r4841497;
}

double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
        double r4841498 = m;
        double r4841499 = n;
        double r4841500 = r4841498 - r4841499;
        double r4841501 = fabs(r4841500);
        double r4841502 = sqrt(r4841501);
        double r4841503 = r4841499 + r4841498;
        double r4841504 = 2.0;
        double r4841505 = r4841503 / r4841504;
        double r4841506 = M;
        double r4841507 = r4841505 - r4841506;
        double r4841508 = l;
        double r4841509 = fma(r4841507, r4841507, r4841508);
        double r4841510 = -r4841509;
        double r4841511 = fma(r4841502, r4841502, r4841510);
        double r4841512 = exp(r4841511);
        return r4841512;
}

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

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

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

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

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

Reproduce

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