Average Error: 14.6 → 1.2
Time: 27.6s
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{n + m}{2} - M, \frac{n + m}{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{n + m}{2} - M, \frac{n + m}{2} - M, \ell\right)}
double f(double K, double m, double n, double M, double l) {
        double r2672475 = K;
        double r2672476 = m;
        double r2672477 = n;
        double r2672478 = r2672476 + r2672477;
        double r2672479 = r2672475 * r2672478;
        double r2672480 = 2.0;
        double r2672481 = r2672479 / r2672480;
        double r2672482 = M;
        double r2672483 = r2672481 - r2672482;
        double r2672484 = cos(r2672483);
        double r2672485 = r2672478 / r2672480;
        double r2672486 = r2672485 - r2672482;
        double r2672487 = pow(r2672486, r2672480);
        double r2672488 = -r2672487;
        double r2672489 = l;
        double r2672490 = r2672476 - r2672477;
        double r2672491 = fabs(r2672490);
        double r2672492 = r2672489 - r2672491;
        double r2672493 = r2672488 - r2672492;
        double r2672494 = exp(r2672493);
        double r2672495 = r2672484 * r2672494;
        return r2672495;
}

double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
        double r2672496 = m;
        double r2672497 = n;
        double r2672498 = r2672496 - r2672497;
        double r2672499 = fabs(r2672498);
        double r2672500 = r2672497 + r2672496;
        double r2672501 = 2.0;
        double r2672502 = r2672500 / r2672501;
        double r2672503 = M;
        double r2672504 = r2672502 - r2672503;
        double r2672505 = l;
        double r2672506 = fma(r2672504, r2672504, r2672505);
        double r2672507 = r2672499 - r2672506;
        double r2672508 = exp(r2672507);
        return r2672508;
}

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 14.6

    \[\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. Simplified14.6

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

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

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

Reproduce

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