Average Error: 14.7 → 1.3
Time: 1.1m
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)}\]
\[\frac{1}{e^{(\left(\frac{m + n}{2} - M\right) \cdot \left(\frac{m + n}{2} - M\right) + \ell)_* - \left|m - n\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)}
\frac{1}{e^{(\left(\frac{m + n}{2} - M\right) \cdot \left(\frac{m + n}{2} - M\right) + \ell)_* - \left|m - n\right|}}
double f(double K, double m, double n, double M, double l) {
        double r39790453 = K;
        double r39790454 = m;
        double r39790455 = n;
        double r39790456 = r39790454 + r39790455;
        double r39790457 = r39790453 * r39790456;
        double r39790458 = 2.0;
        double r39790459 = r39790457 / r39790458;
        double r39790460 = M;
        double r39790461 = r39790459 - r39790460;
        double r39790462 = cos(r39790461);
        double r39790463 = r39790456 / r39790458;
        double r39790464 = r39790463 - r39790460;
        double r39790465 = pow(r39790464, r39790458);
        double r39790466 = -r39790465;
        double r39790467 = l;
        double r39790468 = r39790454 - r39790455;
        double r39790469 = fabs(r39790468);
        double r39790470 = r39790467 - r39790469;
        double r39790471 = r39790466 - r39790470;
        double r39790472 = exp(r39790471);
        double r39790473 = r39790462 * r39790472;
        return r39790473;
}

double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
        double r39790474 = 1.0;
        double r39790475 = m;
        double r39790476 = n;
        double r39790477 = r39790475 + r39790476;
        double r39790478 = 2.0;
        double r39790479 = r39790477 / r39790478;
        double r39790480 = M;
        double r39790481 = r39790479 - r39790480;
        double r39790482 = l;
        double r39790483 = fma(r39790481, r39790481, r39790482);
        double r39790484 = r39790475 - r39790476;
        double r39790485 = fabs(r39790484);
        double r39790486 = r39790483 - r39790485;
        double r39790487 = exp(r39790486);
        double r39790488 = r39790474 / r39790487;
        return r39790488;
}

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

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

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

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

    \[\leadsto \frac{1}{e^{(\left(\frac{m + n}{2} - M\right) \cdot \left(\frac{m + n}{2} - M\right) + \ell)_* - \left|m - n\right|}}\]

Reproduce

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