Average Error: 17.6 → 0.7
Time: 32.1s
Precision: 64
\[\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
\[\mathsf{fma}\left(\cos \left(\frac{K}{2}\right), \left(\ell + \ell\right) \cdot J, U\right)\]
\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U
\mathsf{fma}\left(\cos \left(\frac{K}{2}\right), \left(\ell + \ell\right) \cdot J, U\right)
double f(double J, double l, double K, double U) {
        double r4032210 = J;
        double r4032211 = l;
        double r4032212 = exp(r4032211);
        double r4032213 = -r4032211;
        double r4032214 = exp(r4032213);
        double r4032215 = r4032212 - r4032214;
        double r4032216 = r4032210 * r4032215;
        double r4032217 = K;
        double r4032218 = 2.0;
        double r4032219 = r4032217 / r4032218;
        double r4032220 = cos(r4032219);
        double r4032221 = r4032216 * r4032220;
        double r4032222 = U;
        double r4032223 = r4032221 + r4032222;
        return r4032223;
}

double f(double J, double l, double K, double U) {
        double r4032224 = K;
        double r4032225 = 2.0;
        double r4032226 = r4032224 / r4032225;
        double r4032227 = cos(r4032226);
        double r4032228 = l;
        double r4032229 = r4032228 + r4032228;
        double r4032230 = J;
        double r4032231 = r4032229 * r4032230;
        double r4032232 = U;
        double r4032233 = fma(r4032227, r4032231, r4032232);
        return r4032233;
}

Error

Bits error versus J

Bits error versus l

Bits error versus K

Bits error versus U

Derivation

  1. Initial program 17.6

    \[\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
  2. Simplified17.6

    \[\leadsto \color{blue}{\mathsf{fma}\left(\cos \left(\frac{K}{2}\right), J \cdot e^{\ell} - \frac{J}{e^{\ell}}, U\right)}\]
  3. Taylor expanded around 0 0.7

    \[\leadsto \mathsf{fma}\left(\cos \left(\frac{K}{2}\right), \color{blue}{2 \cdot \left(J \cdot \ell\right)}, U\right)\]
  4. Simplified0.7

    \[\leadsto \mathsf{fma}\left(\cos \left(\frac{K}{2}\right), \color{blue}{J \cdot \left(\ell + \ell\right)}, U\right)\]
  5. Final simplification0.7

    \[\leadsto \mathsf{fma}\left(\cos \left(\frac{K}{2}\right), \left(\ell + \ell\right) \cdot J, U\right)\]

Reproduce

herbie shell --seed 2019171 +o rules:numerics
(FPCore (J l K U)
  :name "Maksimov and Kolovsky, Equation (4)"
  (+ (* (* J (- (exp l) (exp (- l)))) (cos (/ K 2.0))) U))