Average Error: 14.7 → 1.3
Time: 22.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^{-\mathsf{fma}\left(\left(n + m\right) \cdot \frac{1}{2} - M, \left(n + m\right) \cdot \frac{1}{2} - M, \ell - \left|m - n\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(n + m\right) \cdot \frac{1}{2} - M, \left(n + m\right) \cdot \frac{1}{2} - M, \ell - \left|m - n\right|\right)}
double f(double K, double m, double n, double M, double l) {
        double r1428321 = K;
        double r1428322 = m;
        double r1428323 = n;
        double r1428324 = r1428322 + r1428323;
        double r1428325 = r1428321 * r1428324;
        double r1428326 = 2.0;
        double r1428327 = r1428325 / r1428326;
        double r1428328 = M;
        double r1428329 = r1428327 - r1428328;
        double r1428330 = cos(r1428329);
        double r1428331 = r1428324 / r1428326;
        double r1428332 = r1428331 - r1428328;
        double r1428333 = pow(r1428332, r1428326);
        double r1428334 = -r1428333;
        double r1428335 = l;
        double r1428336 = r1428322 - r1428323;
        double r1428337 = fabs(r1428336);
        double r1428338 = r1428335 - r1428337;
        double r1428339 = r1428334 - r1428338;
        double r1428340 = exp(r1428339);
        double r1428341 = r1428330 * r1428340;
        return r1428341;
}

double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
        double r1428342 = n;
        double r1428343 = m;
        double r1428344 = r1428342 + r1428343;
        double r1428345 = 0.5;
        double r1428346 = r1428344 * r1428345;
        double r1428347 = M;
        double r1428348 = r1428346 - r1428347;
        double r1428349 = l;
        double r1428350 = r1428343 - r1428342;
        double r1428351 = fabs(r1428350);
        double r1428352 = r1428349 - r1428351;
        double r1428353 = fma(r1428348, r1428348, r1428352);
        double r1428354 = -r1428353;
        double r1428355 = exp(r1428354);
        return r1428355;
}

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}{\frac{2}{m + n}} - M\right)}{e^{\mathsf{fma}\left(\frac{m + n}{2} - M, \frac{m + n}{2} - M, \ell\right) - \left|m - n\right|}}}\]
  3. Taylor expanded around 0 1.3

    \[\leadsto \frac{\color{blue}{1}}{e^{\mathsf{fma}\left(\frac{m + n}{2} - M, \frac{m + n}{2} - M, \ell\right) - \left|m - n\right|}}\]
  4. Taylor expanded around inf 1.3

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

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

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

Reproduce

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