Average Error: 17.2 → 0.7
Time: 32.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 \cdot \left(\cos \left(\frac{1}{2} \cdot K\right) \cdot \ell\right), 2, U\right)\]
\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U
\mathsf{fma}\left(J \cdot \left(\cos \left(\frac{1}{2} \cdot K\right) \cdot \ell\right), 2, U\right)
double f(double J, double l, double K, double U) {
        double r3315459 = J;
        double r3315460 = l;
        double r3315461 = exp(r3315460);
        double r3315462 = -r3315460;
        double r3315463 = exp(r3315462);
        double r3315464 = r3315461 - r3315463;
        double r3315465 = r3315459 * r3315464;
        double r3315466 = K;
        double r3315467 = 2.0;
        double r3315468 = r3315466 / r3315467;
        double r3315469 = cos(r3315468);
        double r3315470 = r3315465 * r3315469;
        double r3315471 = U;
        double r3315472 = r3315470 + r3315471;
        return r3315472;
}

double f(double J, double l, double K, double U) {
        double r3315473 = J;
        double r3315474 = 0.5;
        double r3315475 = K;
        double r3315476 = r3315474 * r3315475;
        double r3315477 = cos(r3315476);
        double r3315478 = l;
        double r3315479 = r3315477 * r3315478;
        double r3315480 = r3315473 * r3315479;
        double r3315481 = 2.0;
        double r3315482 = U;
        double r3315483 = fma(r3315480, r3315481, r3315482);
        return r3315483;
}

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.7

    \[\leadsto \color{blue}{\left(2 \cdot \left(J \cdot \ell\right)\right)} \cdot \cos \left(\frac{K}{2}\right) + U\]
  3. Taylor expanded around inf 0.7

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

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

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

Reproduce

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