Average Error: 17.7 → 0.4
Time: 37.3s
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(\left(\mathsf{fma}\left(\left(\ell \cdot \ell\right), \frac{1}{3}, 2\right)\right), \ell, \left(\left(\left(\left(\ell \cdot \ell\right) \cdot \left(\ell \cdot \ell\right)\right) \cdot \ell\right) \cdot \frac{1}{60}\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(\left(\mathsf{fma}\left(\left(\ell \cdot \ell\right), \frac{1}{3}, 2\right)\right), \ell, \left(\left(\left(\left(\ell \cdot \ell\right) \cdot \left(\ell \cdot \ell\right)\right) \cdot \ell\right) \cdot \frac{1}{60}\right)\right) \cdot \cos \left(\frac{K}{2}\right)\right) + U
double f(double J, double l, double K, double U) {
        double r3062745 = J;
        double r3062746 = l;
        double r3062747 = exp(r3062746);
        double r3062748 = -r3062746;
        double r3062749 = exp(r3062748);
        double r3062750 = r3062747 - r3062749;
        double r3062751 = r3062745 * r3062750;
        double r3062752 = K;
        double r3062753 = 2.0;
        double r3062754 = r3062752 / r3062753;
        double r3062755 = cos(r3062754);
        double r3062756 = r3062751 * r3062755;
        double r3062757 = U;
        double r3062758 = r3062756 + r3062757;
        return r3062758;
}

double f(double J, double l, double K, double U) {
        double r3062759 = J;
        double r3062760 = l;
        double r3062761 = r3062760 * r3062760;
        double r3062762 = 0.3333333333333333;
        double r3062763 = 2.0;
        double r3062764 = fma(r3062761, r3062762, r3062763);
        double r3062765 = r3062761 * r3062761;
        double r3062766 = r3062765 * r3062760;
        double r3062767 = 0.016666666666666666;
        double r3062768 = r3062766 * r3062767;
        double r3062769 = fma(r3062764, r3062760, r3062768);
        double r3062770 = K;
        double r3062771 = r3062770 / r3062763;
        double r3062772 = cos(r3062771);
        double r3062773 = r3062769 * r3062772;
        double r3062774 = r3062759 * r3062773;
        double r3062775 = U;
        double r3062776 = r3062774 + r3062775;
        return r3062776;
}

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(\left({\ell}^{5}\right), \frac{1}{60}, \left(\ell \cdot \left(2 + \frac{1}{3} \cdot \left(\ell \cdot \ell\right)\right)\right)\right)}\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
  4. Using strategy rm
  5. Applied associate-*l*0.4

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

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

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

Reproduce

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