Average Error: 17.5 → 0.4
Time: 21.2s
Precision: 64
\[\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
\[U + \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, \mathsf{fma}\left(2, \ell, \frac{1}{3} \cdot {\ell}^{3}\right)\right) \cdot \left(J \cdot \cos \left(\frac{K}{2}\right)\right)\]
\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U
U + \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, \mathsf{fma}\left(2, \ell, \frac{1}{3} \cdot {\ell}^{3}\right)\right) \cdot \left(J \cdot \cos \left(\frac{K}{2}\right)\right)
double f(double J, double l, double K, double U) {
        double r63856 = J;
        double r63857 = l;
        double r63858 = exp(r63857);
        double r63859 = -r63857;
        double r63860 = exp(r63859);
        double r63861 = r63858 - r63860;
        double r63862 = r63856 * r63861;
        double r63863 = K;
        double r63864 = 2.0;
        double r63865 = r63863 / r63864;
        double r63866 = cos(r63865);
        double r63867 = r63862 * r63866;
        double r63868 = U;
        double r63869 = r63867 + r63868;
        return r63869;
}

double f(double J, double l, double K, double U) {
        double r63870 = U;
        double r63871 = 0.016666666666666666;
        double r63872 = l;
        double r63873 = 5.0;
        double r63874 = pow(r63872, r63873);
        double r63875 = 2.0;
        double r63876 = 0.3333333333333333;
        double r63877 = 3.0;
        double r63878 = pow(r63872, r63877);
        double r63879 = r63876 * r63878;
        double r63880 = fma(r63875, r63872, r63879);
        double r63881 = fma(r63871, r63874, r63880);
        double r63882 = J;
        double r63883 = K;
        double r63884 = 2.0;
        double r63885 = r63883 / r63884;
        double r63886 = cos(r63885);
        double r63887 = r63882 * r63886;
        double r63888 = r63881 * r63887;
        double r63889 = r63870 + r63888;
        return r63889;
}

Error

Bits error versus J

Bits error versus l

Bits error versus K

Bits error versus U

Derivation

  1. Initial program 17.5

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

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

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

    \[\leadsto \mathsf{fma}\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)}, \cos \left(\frac{K}{2}\right), U\right)\]
  5. Using strategy rm
  6. Applied fma-udef0.4

    \[\leadsto \color{blue}{\left(J \cdot \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}\]
  7. Using strategy rm
  8. Applied pow10.4

    \[\leadsto \left(J \cdot \mathsf{fma}\left(\frac{1}{3}, {\ell}^{3}, \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, 2 \cdot \ell\right)\right)\right) \cdot \color{blue}{{\left(\cos \left(\frac{K}{2}\right)\right)}^{1}} + U\]
  9. Applied pow10.4

    \[\leadsto \left(J \cdot \color{blue}{{\left(\mathsf{fma}\left(\frac{1}{3}, {\ell}^{3}, \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, 2 \cdot \ell\right)\right)\right)}^{1}}\right) \cdot {\left(\cos \left(\frac{K}{2}\right)\right)}^{1} + U\]
  10. Applied pow10.4

    \[\leadsto \left(\color{blue}{{J}^{1}} \cdot {\left(\mathsf{fma}\left(\frac{1}{3}, {\ell}^{3}, \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, 2 \cdot \ell\right)\right)\right)}^{1}\right) \cdot {\left(\cos \left(\frac{K}{2}\right)\right)}^{1} + U\]
  11. Applied pow-prod-down0.4

    \[\leadsto \color{blue}{{\left(J \cdot \mathsf{fma}\left(\frac{1}{3}, {\ell}^{3}, \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, 2 \cdot \ell\right)\right)\right)}^{1}} \cdot {\left(\cos \left(\frac{K}{2}\right)\right)}^{1} + U\]
  12. Applied pow-prod-down0.4

    \[\leadsto \color{blue}{{\left(\left(J \cdot \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)\right)}^{1}} + U\]
  13. Simplified0.4

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

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

Reproduce

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