Average Error: 17.6 → 0.4
Time: 27.3s
Precision: 64
\[\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
\[\mathsf{fma}\left(J, \cos \left(\frac{K}{2}\right) \cdot \mathsf{fma}\left(\ell, \left(\ell \cdot \ell\right) \cdot \frac{1}{3}, \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, \ell + \ell\right)\right), U\right)\]
\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U
\mathsf{fma}\left(J, \cos \left(\frac{K}{2}\right) \cdot \mathsf{fma}\left(\ell, \left(\ell \cdot \ell\right) \cdot \frac{1}{3}, \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, \ell + \ell\right)\right), U\right)
double f(double J, double l, double K, double U) {
        double r3646454 = J;
        double r3646455 = l;
        double r3646456 = exp(r3646455);
        double r3646457 = -r3646455;
        double r3646458 = exp(r3646457);
        double r3646459 = r3646456 - r3646458;
        double r3646460 = r3646454 * r3646459;
        double r3646461 = K;
        double r3646462 = 2.0;
        double r3646463 = r3646461 / r3646462;
        double r3646464 = cos(r3646463);
        double r3646465 = r3646460 * r3646464;
        double r3646466 = U;
        double r3646467 = r3646465 + r3646466;
        return r3646467;
}

double f(double J, double l, double K, double U) {
        double r3646468 = J;
        double r3646469 = K;
        double r3646470 = 2.0;
        double r3646471 = r3646469 / r3646470;
        double r3646472 = cos(r3646471);
        double r3646473 = l;
        double r3646474 = r3646473 * r3646473;
        double r3646475 = 0.3333333333333333;
        double r3646476 = r3646474 * r3646475;
        double r3646477 = 0.016666666666666666;
        double r3646478 = 5.0;
        double r3646479 = pow(r3646473, r3646478);
        double r3646480 = r3646473 + r3646473;
        double r3646481 = fma(r3646477, r3646479, r3646480);
        double r3646482 = fma(r3646473, r3646476, r3646481);
        double r3646483 = r3646472 * r3646482;
        double r3646484 = U;
        double r3646485 = fma(r3646468, r3646483, r3646484);
        return r3646485;
}

Error

Bits error versus J

Bits error versus l

Bits error versus K

Bits error versus U

Derivation

  1. Initial program 17.6

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

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

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

Reproduce

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