Average Error: 17.7 → 0.4
Time: 28.8s
Precision: 64
\[\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
\[U + \cos \left(\frac{K}{2}\right) \cdot \left(J \cdot \left(\mathsf{fma}\left(\ell \cdot \ell, \frac{1}{3}, 2\right) \cdot \ell\right) + \left({\ell}^{5} \cdot \frac{1}{60}\right) \cdot J\right)\]
\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U
U + \cos \left(\frac{K}{2}\right) \cdot \left(J \cdot \left(\mathsf{fma}\left(\ell \cdot \ell, \frac{1}{3}, 2\right) \cdot \ell\right) + \left({\ell}^{5} \cdot \frac{1}{60}\right) \cdot J\right)
double f(double J, double l, double K, double U) {
        double r4145738 = J;
        double r4145739 = l;
        double r4145740 = exp(r4145739);
        double r4145741 = -r4145739;
        double r4145742 = exp(r4145741);
        double r4145743 = r4145740 - r4145742;
        double r4145744 = r4145738 * r4145743;
        double r4145745 = K;
        double r4145746 = 2.0;
        double r4145747 = r4145745 / r4145746;
        double r4145748 = cos(r4145747);
        double r4145749 = r4145744 * r4145748;
        double r4145750 = U;
        double r4145751 = r4145749 + r4145750;
        return r4145751;
}

double f(double J, double l, double K, double U) {
        double r4145752 = U;
        double r4145753 = K;
        double r4145754 = 2.0;
        double r4145755 = r4145753 / r4145754;
        double r4145756 = cos(r4145755);
        double r4145757 = J;
        double r4145758 = l;
        double r4145759 = r4145758 * r4145758;
        double r4145760 = 0.3333333333333333;
        double r4145761 = 2.0;
        double r4145762 = fma(r4145759, r4145760, r4145761);
        double r4145763 = r4145762 * r4145758;
        double r4145764 = r4145757 * r4145763;
        double r4145765 = 5.0;
        double r4145766 = pow(r4145758, r4145765);
        double r4145767 = 0.016666666666666666;
        double r4145768 = r4145766 * r4145767;
        double r4145769 = r4145768 * r4145757;
        double r4145770 = r4145764 + r4145769;
        double r4145771 = r4145756 * r4145770;
        double r4145772 = r4145752 + r4145771;
        return r4145772;
}

Error

Bits error versus J

Bits error versus l

Bits error versus K

Bits error versus U

Derivation

  1. Initial program 17.7

    \[\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 \left(\frac{1}{3} \cdot \left(\ell \cdot \ell\right) + 2\right)\right)}\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
  4. Using strategy rm
  5. Applied fma-udef0.4

    \[\leadsto \left(J \cdot \color{blue}{\left(\frac{1}{60} \cdot {\ell}^{5} + \ell \cdot \left(\frac{1}{3} \cdot \left(\ell \cdot \ell\right) + 2\right)\right)}\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
  6. Applied distribute-rgt-in0.4

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

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

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

Reproduce

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