Average Error: 17.2 → 0.4
Time: 31.4s
Precision: 64
\[\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
\[\cos \left(\frac{K}{2}\right) \cdot \left(J \cdot \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, \ell \cdot \mathsf{fma}\left(\frac{1}{3}, \ell \cdot \ell, 2\right)\right)\right) + U\]
\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U
\cos \left(\frac{K}{2}\right) \cdot \left(J \cdot \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, \ell \cdot \mathsf{fma}\left(\frac{1}{3}, \ell \cdot \ell, 2\right)\right)\right) + U
double f(double J, double l, double K, double U) {
        double r3378746 = J;
        double r3378747 = l;
        double r3378748 = exp(r3378747);
        double r3378749 = -r3378747;
        double r3378750 = exp(r3378749);
        double r3378751 = r3378748 - r3378750;
        double r3378752 = r3378746 * r3378751;
        double r3378753 = K;
        double r3378754 = 2.0;
        double r3378755 = r3378753 / r3378754;
        double r3378756 = cos(r3378755);
        double r3378757 = r3378752 * r3378756;
        double r3378758 = U;
        double r3378759 = r3378757 + r3378758;
        return r3378759;
}

double f(double J, double l, double K, double U) {
        double r3378760 = K;
        double r3378761 = 2.0;
        double r3378762 = r3378760 / r3378761;
        double r3378763 = cos(r3378762);
        double r3378764 = J;
        double r3378765 = 0.016666666666666666;
        double r3378766 = l;
        double r3378767 = 5.0;
        double r3378768 = pow(r3378766, r3378767);
        double r3378769 = 0.3333333333333333;
        double r3378770 = r3378766 * r3378766;
        double r3378771 = fma(r3378769, r3378770, r3378761);
        double r3378772 = r3378766 * r3378771;
        double r3378773 = fma(r3378765, r3378768, r3378772);
        double r3378774 = r3378764 * r3378773;
        double r3378775 = r3378763 * r3378774;
        double r3378776 = U;
        double r3378777 = r3378775 + r3378776;
        return r3378777;
}

Error

Bits error versus J

Bits error versus l

Bits error versus K

Bits error versus U

Derivation

  1. Initial program 17.2

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

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

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

Reproduce

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