Average Error: 17.8 → 0.4
Time: 46.7s
Precision: 64
\[\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
\[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\]
\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U
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
double f(double J, double l, double K, double U) {
        double r99432 = J;
        double r99433 = l;
        double r99434 = exp(r99433);
        double r99435 = -r99433;
        double r99436 = exp(r99435);
        double r99437 = r99434 - r99436;
        double r99438 = r99432 * r99437;
        double r99439 = K;
        double r99440 = 2.0;
        double r99441 = r99439 / r99440;
        double r99442 = cos(r99441);
        double r99443 = r99438 * r99442;
        double r99444 = U;
        double r99445 = r99443 + r99444;
        return r99445;
}

double f(double J, double l, double K, double U) {
        double r99446 = J;
        double r99447 = 0.3333333333333333;
        double r99448 = l;
        double r99449 = 3.0;
        double r99450 = pow(r99448, r99449);
        double r99451 = 0.016666666666666666;
        double r99452 = 5.0;
        double r99453 = pow(r99448, r99452);
        double r99454 = 2.0;
        double r99455 = r99454 * r99448;
        double r99456 = fma(r99451, r99453, r99455);
        double r99457 = fma(r99447, r99450, r99456);
        double r99458 = K;
        double r99459 = 2.0;
        double r99460 = r99458 / r99459;
        double r99461 = cos(r99460);
        double r99462 = r99457 * r99461;
        double r99463 = r99446 * r99462;
        double r99464 = U;
        double r99465 = r99463 + r99464;
        return r99465;
}

Error

Bits error versus J

Bits error versus l

Bits error versus K

Bits error versus U

Derivation

  1. Initial program 17.8

    \[\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
  2. Taylor expanded around 0 0.4

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

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

    \[\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. Final simplification0.4

    \[\leadsto 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\]

Reproduce

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