Average Error: 17.8 → 0.6
Time: 30.6s
Precision: 64
\[\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
\[\mathsf{fma}\left(\cos \left(\frac{K}{2}\right), \left(J \cdot \ell\right) \cdot 2, U\right)\]
\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U
\mathsf{fma}\left(\cos \left(\frac{K}{2}\right), \left(J \cdot \ell\right) \cdot 2, U\right)
double f(double J, double l, double K, double U) {
        double r1154102 = J;
        double r1154103 = l;
        double r1154104 = exp(r1154103);
        double r1154105 = -r1154103;
        double r1154106 = exp(r1154105);
        double r1154107 = r1154104 - r1154106;
        double r1154108 = r1154102 * r1154107;
        double r1154109 = K;
        double r1154110 = 2.0;
        double r1154111 = r1154109 / r1154110;
        double r1154112 = cos(r1154111);
        double r1154113 = r1154108 * r1154112;
        double r1154114 = U;
        double r1154115 = r1154113 + r1154114;
        return r1154115;
}

double f(double J, double l, double K, double U) {
        double r1154116 = K;
        double r1154117 = 2.0;
        double r1154118 = r1154116 / r1154117;
        double r1154119 = cos(r1154118);
        double r1154120 = J;
        double r1154121 = l;
        double r1154122 = r1154120 * r1154121;
        double r1154123 = r1154122 * r1154117;
        double r1154124 = U;
        double r1154125 = fma(r1154119, r1154123, r1154124);
        return r1154125;
}

Error

Bits error versus J

Bits error versus l

Bits error versus K

Bits error versus U

Derivation

  1. Initial program 17.8

    \[\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
  2. Simplified17.8

    \[\leadsto \color{blue}{\mathsf{fma}\left(\cos \left(\frac{K}{2}\right), J \cdot e^{\ell} - \frac{J}{e^{\ell}}, U\right)}\]
  3. Taylor expanded around 0 0.6

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

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

Reproduce

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