Average Error: 17.6 → 0.5
Time: 49.5s
Precision: 64
\[\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
\[\mathsf{fma}\left(J, \mathsf{fma}\left(\frac{1}{3}, {\ell}^{3}, \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, 2 \cdot \ell\right)\right) \cdot \cos \left(\frac{K}{2}\right), U\right)\]
\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U
\mathsf{fma}\left(J, \mathsf{fma}\left(\frac{1}{3}, {\ell}^{3}, \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, 2 \cdot \ell\right)\right) \cdot \cos \left(\frac{K}{2}\right), U\right)
double f(double J, double l, double K, double U) {
        double r235239 = J;
        double r235240 = l;
        double r235241 = exp(r235240);
        double r235242 = -r235240;
        double r235243 = exp(r235242);
        double r235244 = r235241 - r235243;
        double r235245 = r235239 * r235244;
        double r235246 = K;
        double r235247 = 2.0;
        double r235248 = r235246 / r235247;
        double r235249 = cos(r235248);
        double r235250 = r235245 * r235249;
        double r235251 = U;
        double r235252 = r235250 + r235251;
        return r235252;
}

double f(double J, double l, double K, double U) {
        double r235253 = J;
        double r235254 = 0.3333333333333333;
        double r235255 = l;
        double r235256 = 3.0;
        double r235257 = pow(r235255, r235256);
        double r235258 = 0.016666666666666666;
        double r235259 = 5.0;
        double r235260 = pow(r235255, r235259);
        double r235261 = 2.0;
        double r235262 = r235261 * r235255;
        double r235263 = fma(r235258, r235260, r235262);
        double r235264 = fma(r235254, r235257, r235263);
        double r235265 = K;
        double r235266 = 2.0;
        double r235267 = r235265 / r235266;
        double r235268 = cos(r235267);
        double r235269 = r235264 * r235268;
        double r235270 = U;
        double r235271 = fma(r235253, r235269, r235270);
        return r235271;
}

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. Taylor expanded around 0 0.5

    \[\leadsto \left(J \cdot \color{blue}{\left(\frac{1}{3} \cdot {\ell}^{3} + \left(\frac{1}{60} \cdot {\ell}^{5} + 2 \cdot \ell\right)\right)}\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
  3. Simplified0.5

    \[\leadsto \left(J \cdot \color{blue}{\mathsf{fma}\left(\frac{1}{3}, {\ell}^{3}, \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, 2 \cdot \ell\right)\right)}\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
  4. Using strategy rm
  5. Applied associate-*l*0.5

    \[\leadsto \color{blue}{J \cdot \left(\mathsf{fma}\left(\frac{1}{3}, {\ell}^{3}, \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, 2 \cdot \ell\right)\right) \cdot \cos \left(\frac{K}{2}\right)\right)} + U\]
  6. Using strategy rm
  7. Applied fma-def0.5

    \[\leadsto \color{blue}{\mathsf{fma}\left(J, \mathsf{fma}\left(\frac{1}{3}, {\ell}^{3}, \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, 2 \cdot \ell\right)\right) \cdot \cos \left(\frac{K}{2}\right), U\right)}\]
  8. Final simplification0.5

    \[\leadsto \mathsf{fma}\left(J, \mathsf{fma}\left(\frac{1}{3}, {\ell}^{3}, \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, 2 \cdot \ell\right)\right) \cdot \cos \left(\frac{K}{2}\right), U\right)\]

Reproduce

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