Average Error: 17.3 → 0.3
Time: 27.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 r146926 = J;
        double r146927 = l;
        double r146928 = exp(r146927);
        double r146929 = -r146927;
        double r146930 = exp(r146929);
        double r146931 = r146928 - r146930;
        double r146932 = r146926 * r146931;
        double r146933 = K;
        double r146934 = 2.0;
        double r146935 = r146933 / r146934;
        double r146936 = cos(r146935);
        double r146937 = r146932 * r146936;
        double r146938 = U;
        double r146939 = r146937 + r146938;
        return r146939;
}

double f(double J, double l, double K, double U) {
        double r146940 = J;
        double r146941 = 0.3333333333333333;
        double r146942 = l;
        double r146943 = 3.0;
        double r146944 = pow(r146942, r146943);
        double r146945 = 0.016666666666666666;
        double r146946 = 5.0;
        double r146947 = pow(r146942, r146946);
        double r146948 = 2.0;
        double r146949 = r146948 * r146942;
        double r146950 = fma(r146945, r146947, r146949);
        double r146951 = fma(r146941, r146944, r146950);
        double r146952 = K;
        double r146953 = 2.0;
        double r146954 = r146952 / r146953;
        double r146955 = cos(r146954);
        double r146956 = r146951 * r146955;
        double r146957 = U;
        double r146958 = fma(r146940, r146956, r146957);
        return r146958;
}

Error

Bits error versus J

Bits error versus l

Bits error versus K

Bits error versus U

Derivation

  1. Initial program 17.3

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

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

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

    \[\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 2020045 +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))