Average Error: 17.5 → 0.4
Time: 37.8s
Precision: 64
\[\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
\[\left(\left(\left(\ell \cdot \left(\ell \cdot \ell\right)\right) \cdot \left(\ell \cdot \ell\right)\right) \cdot \left(\frac{1}{60} \cdot J\right) + \mathsf{fma}\left(\ell \cdot \ell, \frac{1}{3}, 2\right) \cdot \left(J \cdot \ell\right)\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(\left(\left(\ell \cdot \left(\ell \cdot \ell\right)\right) \cdot \left(\ell \cdot \ell\right)\right) \cdot \left(\frac{1}{60} \cdot J\right) + \mathsf{fma}\left(\ell \cdot \ell, \frac{1}{3}, 2\right) \cdot \left(J \cdot \ell\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U
double f(double J, double l, double K, double U) {
        double r3143596 = J;
        double r3143597 = l;
        double r3143598 = exp(r3143597);
        double r3143599 = -r3143597;
        double r3143600 = exp(r3143599);
        double r3143601 = r3143598 - r3143600;
        double r3143602 = r3143596 * r3143601;
        double r3143603 = K;
        double r3143604 = 2.0;
        double r3143605 = r3143603 / r3143604;
        double r3143606 = cos(r3143605);
        double r3143607 = r3143602 * r3143606;
        double r3143608 = U;
        double r3143609 = r3143607 + r3143608;
        return r3143609;
}

double f(double J, double l, double K, double U) {
        double r3143610 = l;
        double r3143611 = r3143610 * r3143610;
        double r3143612 = r3143610 * r3143611;
        double r3143613 = r3143612 * r3143611;
        double r3143614 = 0.016666666666666666;
        double r3143615 = J;
        double r3143616 = r3143614 * r3143615;
        double r3143617 = r3143613 * r3143616;
        double r3143618 = 0.3333333333333333;
        double r3143619 = 2.0;
        double r3143620 = fma(r3143611, r3143618, r3143619);
        double r3143621 = r3143615 * r3143610;
        double r3143622 = r3143620 * r3143621;
        double r3143623 = r3143617 + r3143622;
        double r3143624 = K;
        double r3143625 = r3143624 / r3143619;
        double r3143626 = cos(r3143625);
        double r3143627 = r3143623 * r3143626;
        double r3143628 = U;
        double r3143629 = r3143627 + r3143628;
        return r3143629;
}

Error

Bits error versus J

Bits error versus l

Bits error versus K

Bits error versus U

Derivation

  1. Initial program 17.5

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

    \[\leadsto \left(J \cdot \color{blue}{\left({\ell}^{5} \cdot \frac{1}{60} + \ell \cdot \left(\frac{1}{3} \cdot \left(\ell \cdot \ell\right) + 2\right)\right)}\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
  6. Applied distribute-rgt-in0.4

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

    \[\leadsto \left(\color{blue}{\left(\left(\ell \cdot \left(\ell \cdot \ell\right)\right) \cdot \left(\ell \cdot \ell\right)\right) \cdot \left(\frac{1}{60} \cdot J\right)} + \left(\ell \cdot \left(\frac{1}{3} \cdot \left(\ell \cdot \ell\right) + 2\right)\right) \cdot J\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
  8. Simplified0.4

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

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

Reproduce

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