Average Error: 17.7 → 0.4
Time: 31.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(\mathsf{fma}\left({\ell}^{5}, \frac{1}{60}, \ell \cdot \left(\left(\ell \cdot \ell\right) \cdot \frac{1}{3} + 2\right)\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(\mathsf{fma}\left({\ell}^{5}, \frac{1}{60}, \ell \cdot \left(\left(\ell \cdot \ell\right) \cdot \frac{1}{3} + 2\right)\right) \cdot J\right)
double f(double J, double l, double K, double U) {
        double r3175599 = J;
        double r3175600 = l;
        double r3175601 = exp(r3175600);
        double r3175602 = -r3175600;
        double r3175603 = exp(r3175602);
        double r3175604 = r3175601 - r3175603;
        double r3175605 = r3175599 * r3175604;
        double r3175606 = K;
        double r3175607 = 2.0;
        double r3175608 = r3175606 / r3175607;
        double r3175609 = cos(r3175608);
        double r3175610 = r3175605 * r3175609;
        double r3175611 = U;
        double r3175612 = r3175610 + r3175611;
        return r3175612;
}

double f(double J, double l, double K, double U) {
        double r3175613 = U;
        double r3175614 = K;
        double r3175615 = 2.0;
        double r3175616 = r3175614 / r3175615;
        double r3175617 = cos(r3175616);
        double r3175618 = l;
        double r3175619 = 5.0;
        double r3175620 = pow(r3175618, r3175619);
        double r3175621 = 0.016666666666666666;
        double r3175622 = r3175618 * r3175618;
        double r3175623 = 0.3333333333333333;
        double r3175624 = r3175622 * r3175623;
        double r3175625 = r3175624 + r3175615;
        double r3175626 = r3175618 * r3175625;
        double r3175627 = fma(r3175620, r3175621, r3175626);
        double r3175628 = J;
        double r3175629 = r3175627 * r3175628;
        double r3175630 = r3175617 * r3175629;
        double r3175631 = r3175613 + r3175630;
        return r3175631;
}

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

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

Reproduce

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