Average Error: 17.1 → 0.4
Time: 23.0s
Precision: 64
\[\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
\[\left(\mathsf{fma}\left(2, \ell, \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, \frac{1}{3} \cdot {\ell}^{3}\right)\right) \cdot J\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U
\left(\mathsf{fma}\left(2, \ell, \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, \frac{1}{3} \cdot {\ell}^{3}\right)\right) \cdot J\right) \cdot \cos \left(\frac{K}{2}\right) + U
double f(double J, double l, double K, double U) {
        double r71498 = J;
        double r71499 = l;
        double r71500 = exp(r71499);
        double r71501 = -r71499;
        double r71502 = exp(r71501);
        double r71503 = r71500 - r71502;
        double r71504 = r71498 * r71503;
        double r71505 = K;
        double r71506 = 2.0;
        double r71507 = r71505 / r71506;
        double r71508 = cos(r71507);
        double r71509 = r71504 * r71508;
        double r71510 = U;
        double r71511 = r71509 + r71510;
        return r71511;
}

double f(double J, double l, double K, double U) {
        double r71512 = 2.0;
        double r71513 = l;
        double r71514 = 0.016666666666666666;
        double r71515 = 5.0;
        double r71516 = pow(r71513, r71515);
        double r71517 = 0.3333333333333333;
        double r71518 = 3.0;
        double r71519 = pow(r71513, r71518);
        double r71520 = r71517 * r71519;
        double r71521 = fma(r71514, r71516, r71520);
        double r71522 = fma(r71512, r71513, r71521);
        double r71523 = J;
        double r71524 = r71522 * r71523;
        double r71525 = K;
        double r71526 = 2.0;
        double r71527 = r71525 / r71526;
        double r71528 = cos(r71527);
        double r71529 = r71524 * r71528;
        double r71530 = U;
        double r71531 = r71529 + r71530;
        return r71531;
}

Error

Bits error versus J

Bits error versus l

Bits error versus K

Bits error versus U

Derivation

  1. Initial program 17.1

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

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

Reproduce

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