Average Error: 17.2 → 0.4
Time: 1.5m
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}, \left({\ell}^{5}\right), \left(\ell \cdot \mathsf{fma}\left(\frac{1}{3}, \left(\ell \cdot \ell\right), 2\right)\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}, \left({\ell}^{5}\right), \left(\ell \cdot \mathsf{fma}\left(\frac{1}{3}, \left(\ell \cdot \ell\right), 2\right)\right)\right)\right) + U
double f(double J, double l, double K, double U) {
        double r34740827 = J;
        double r34740828 = l;
        double r34740829 = exp(r34740828);
        double r34740830 = -r34740828;
        double r34740831 = exp(r34740830);
        double r34740832 = r34740829 - r34740831;
        double r34740833 = r34740827 * r34740832;
        double r34740834 = K;
        double r34740835 = 2.0;
        double r34740836 = r34740834 / r34740835;
        double r34740837 = cos(r34740836);
        double r34740838 = r34740833 * r34740837;
        double r34740839 = U;
        double r34740840 = r34740838 + r34740839;
        return r34740840;
}

double f(double J, double l, double K, double U) {
        double r34740841 = K;
        double r34740842 = 2.0;
        double r34740843 = r34740841 / r34740842;
        double r34740844 = cos(r34740843);
        double r34740845 = J;
        double r34740846 = 0.016666666666666666;
        double r34740847 = l;
        double r34740848 = 5.0;
        double r34740849 = pow(r34740847, r34740848);
        double r34740850 = 0.3333333333333333;
        double r34740851 = r34740847 * r34740847;
        double r34740852 = fma(r34740850, r34740851, r34740842);
        double r34740853 = r34740847 * r34740852;
        double r34740854 = fma(r34740846, r34740849, r34740853);
        double r34740855 = r34740845 * r34740854;
        double r34740856 = r34740844 * r34740855;
        double r34740857 = U;
        double r34740858 = r34740856 + r34740857;
        return r34740858;
}

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

    \[\leadsto \cos \left(\frac{K}{2}\right) \cdot \left(J \cdot \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) + U\]

Reproduce

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