Average Error: 17.1 → 0.5
Time: 52.8s
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}{60}, \left({\ell}^{5}\right), \left(\ell \cdot \mathsf{fma}\left(\frac{1}{3}, \left(\ell \cdot \ell\right), 2\right)\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}{60}, \left({\ell}^{5}\right), \left(\ell \cdot \mathsf{fma}\left(\frac{1}{3}, \left(\ell \cdot \ell\right), 2\right)\right)\right) \cdot \cos \left(\frac{K}{2}\right)\right) + U
double f(double J, double l, double K, double U) {
        double r9362865 = J;
        double r9362866 = l;
        double r9362867 = exp(r9362866);
        double r9362868 = -r9362866;
        double r9362869 = exp(r9362868);
        double r9362870 = r9362867 - r9362869;
        double r9362871 = r9362865 * r9362870;
        double r9362872 = K;
        double r9362873 = 2.0;
        double r9362874 = r9362872 / r9362873;
        double r9362875 = cos(r9362874);
        double r9362876 = r9362871 * r9362875;
        double r9362877 = U;
        double r9362878 = r9362876 + r9362877;
        return r9362878;
}

double f(double J, double l, double K, double U) {
        double r9362879 = J;
        double r9362880 = 0.016666666666666666;
        double r9362881 = l;
        double r9362882 = 5.0;
        double r9362883 = pow(r9362881, r9362882);
        double r9362884 = 0.3333333333333333;
        double r9362885 = r9362881 * r9362881;
        double r9362886 = 2.0;
        double r9362887 = fma(r9362884, r9362885, r9362886);
        double r9362888 = r9362881 * r9362887;
        double r9362889 = fma(r9362880, r9362883, r9362888);
        double r9362890 = K;
        double r9362891 = r9362890 / r9362886;
        double r9362892 = cos(r9362891);
        double r9362893 = r9362889 * r9362892;
        double r9362894 = r9362879 * r9362893;
        double r9362895 = U;
        double r9362896 = r9362894 + r9362895;
        return r9362896;
}

Error

Bits error versus J

Bits error versus l

Bits error versus K

Bits error versus U

Derivation

  1. Initial program 17.1

    \[\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(2 \cdot \ell + \left(\frac{1}{3} \cdot {\ell}^{3} + \frac{1}{60} \cdot {\ell}^{5}\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}{60}, \left({\ell}^{5}\right), \left(\ell \cdot \mathsf{fma}\left(\frac{1}{3}, \left(\ell \cdot \ell\right), 2\right)\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}{60}, \left({\ell}^{5}\right), \left(\ell \cdot \mathsf{fma}\left(\frac{1}{3}, \left(\ell \cdot \ell\right), 2\right)\right)\right) \cdot \cos \left(\frac{K}{2}\right)\right)} + U\]
  6. Final simplification0.5

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

Reproduce

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