\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\mathsf{fma}\left(J \cdot \mathsf{fma}\left(\frac{1}{3}, {\ell}^{3}, \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, 2 \cdot \ell\right)\right), \cos \left(\frac{K}{2}\right), U\right)double f(double J, double l, double K, double U) {
double r169050 = J;
double r169051 = l;
double r169052 = exp(r169051);
double r169053 = -r169051;
double r169054 = exp(r169053);
double r169055 = r169052 - r169054;
double r169056 = r169050 * r169055;
double r169057 = K;
double r169058 = 2.0;
double r169059 = r169057 / r169058;
double r169060 = cos(r169059);
double r169061 = r169056 * r169060;
double r169062 = U;
double r169063 = r169061 + r169062;
return r169063;
}
double f(double J, double l, double K, double U) {
double r169064 = J;
double r169065 = 0.3333333333333333;
double r169066 = l;
double r169067 = 3.0;
double r169068 = pow(r169066, r169067);
double r169069 = 0.016666666666666666;
double r169070 = 5.0;
double r169071 = pow(r169066, r169070);
double r169072 = 2.0;
double r169073 = r169072 * r169066;
double r169074 = fma(r169069, r169071, r169073);
double r169075 = fma(r169065, r169068, r169074);
double r169076 = r169064 * r169075;
double r169077 = K;
double r169078 = 2.0;
double r169079 = r169077 / r169078;
double r169080 = cos(r169079);
double r169081 = U;
double r169082 = fma(r169076, r169080, r169081);
return r169082;
}



Bits error versus J



Bits error versus l



Bits error versus K



Bits error versus U
Initial program 17.6
Simplified17.6
Taylor expanded around 0 0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019362 +o rules:numerics
(FPCore (J l K U)
:name "Maksimov and Kolovsky, Equation (4)"
:precision binary64
(+ (* (* J (- (exp l) (exp (- l)))) (cos (/ K 2))) U))