Average Error: 14.9 → 1.2
Time: 31.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^{\left|m - n\right| - \mathsf{fma}\left(\frac{m + n}{2} - M, \frac{m + n}{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{m + n}{2} - M, \frac{m + n}{2} - M, \ell\right)}
double f(double K, double m, double n, double M, double l) {
        double r3602221 = K;
        double r3602222 = m;
        double r3602223 = n;
        double r3602224 = r3602222 + r3602223;
        double r3602225 = r3602221 * r3602224;
        double r3602226 = 2.0;
        double r3602227 = r3602225 / r3602226;
        double r3602228 = M;
        double r3602229 = r3602227 - r3602228;
        double r3602230 = cos(r3602229);
        double r3602231 = r3602224 / r3602226;
        double r3602232 = r3602231 - r3602228;
        double r3602233 = pow(r3602232, r3602226);
        double r3602234 = -r3602233;
        double r3602235 = l;
        double r3602236 = r3602222 - r3602223;
        double r3602237 = fabs(r3602236);
        double r3602238 = r3602235 - r3602237;
        double r3602239 = r3602234 - r3602238;
        double r3602240 = exp(r3602239);
        double r3602241 = r3602230 * r3602240;
        return r3602241;
}

double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
        double r3602242 = m;
        double r3602243 = n;
        double r3602244 = r3602242 - r3602243;
        double r3602245 = fabs(r3602244);
        double r3602246 = r3602242 + r3602243;
        double r3602247 = 2.0;
        double r3602248 = r3602246 / r3602247;
        double r3602249 = M;
        double r3602250 = r3602248 - r3602249;
        double r3602251 = l;
        double r3602252 = fma(r3602250, r3602250, r3602251);
        double r3602253 = r3602245 - r3602252;
        double r3602254 = exp(r3602253);
        return r3602254;
}

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

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

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

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

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

Reproduce

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