Average Error: 17.2 → 0.4
Time: 29.7s
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(\ell, \mathsf{fma}\left(\frac{1}{3} \cdot \ell, \ell, 2\right), {\ell}^{5} \cdot \frac{1}{60}\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(\ell, \mathsf{fma}\left(\frac{1}{3} \cdot \ell, \ell, 2\right), {\ell}^{5} \cdot \frac{1}{60}\right)\right) + U
double f(double J, double l, double K, double U) {
        double r3043375 = J;
        double r3043376 = l;
        double r3043377 = exp(r3043376);
        double r3043378 = -r3043376;
        double r3043379 = exp(r3043378);
        double r3043380 = r3043377 - r3043379;
        double r3043381 = r3043375 * r3043380;
        double r3043382 = K;
        double r3043383 = 2.0;
        double r3043384 = r3043382 / r3043383;
        double r3043385 = cos(r3043384);
        double r3043386 = r3043381 * r3043385;
        double r3043387 = U;
        double r3043388 = r3043386 + r3043387;
        return r3043388;
}

double f(double J, double l, double K, double U) {
        double r3043389 = K;
        double r3043390 = 2.0;
        double r3043391 = r3043389 / r3043390;
        double r3043392 = cos(r3043391);
        double r3043393 = J;
        double r3043394 = l;
        double r3043395 = 0.3333333333333333;
        double r3043396 = r3043395 * r3043394;
        double r3043397 = fma(r3043396, r3043394, r3043390);
        double r3043398 = 5.0;
        double r3043399 = pow(r3043394, r3043398);
        double r3043400 = 0.016666666666666666;
        double r3043401 = r3043399 * r3043400;
        double r3043402 = fma(r3043394, r3043397, r3043401);
        double r3043403 = r3043393 * r3043402;
        double r3043404 = r3043392 * r3043403;
        double r3043405 = U;
        double r3043406 = r3043404 + r3043405;
        return r3043406;
}

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

Reproduce

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