Average Error: 17.2 → 0.5
Time: 35.2s
Precision: 64
\[\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\]
\[\left(\mathsf{fma}\left({\ell}^{5}, \frac{1}{60}, \ell \cdot 2 + \ell \cdot \left(\frac{1}{3} \cdot \left(\ell \cdot \ell\right)\right)\right) \cdot J\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(\mathsf{fma}\left({\ell}^{5}, \frac{1}{60}, \ell \cdot 2 + \ell \cdot \left(\frac{1}{3} \cdot \left(\ell \cdot \ell\right)\right)\right) \cdot J\right) \cdot \cos \left(\frac{K}{2}\right) + U
double f(double J, double l, double K, double U) {
        double r3188189 = J;
        double r3188190 = l;
        double r3188191 = exp(r3188190);
        double r3188192 = -r3188190;
        double r3188193 = exp(r3188192);
        double r3188194 = r3188191 - r3188193;
        double r3188195 = r3188189 * r3188194;
        double r3188196 = K;
        double r3188197 = 2.0;
        double r3188198 = r3188196 / r3188197;
        double r3188199 = cos(r3188198);
        double r3188200 = r3188195 * r3188199;
        double r3188201 = U;
        double r3188202 = r3188200 + r3188201;
        return r3188202;
}

double f(double J, double l, double K, double U) {
        double r3188203 = l;
        double r3188204 = 5.0;
        double r3188205 = pow(r3188203, r3188204);
        double r3188206 = 0.016666666666666666;
        double r3188207 = 2.0;
        double r3188208 = r3188203 * r3188207;
        double r3188209 = 0.3333333333333333;
        double r3188210 = r3188203 * r3188203;
        double r3188211 = r3188209 * r3188210;
        double r3188212 = r3188203 * r3188211;
        double r3188213 = r3188208 + r3188212;
        double r3188214 = fma(r3188205, r3188206, r3188213);
        double r3188215 = J;
        double r3188216 = r3188214 * r3188215;
        double r3188217 = K;
        double r3188218 = r3188217 / r3188207;
        double r3188219 = cos(r3188218);
        double r3188220 = r3188216 * r3188219;
        double r3188221 = U;
        double r3188222 = r3188220 + r3188221;
        return r3188222;
}

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

    \[\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.5

    \[\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 distribute-lft-in0.5

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

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

Reproduce

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