\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\mathsf{fma}\left(J, \mathsf{fma}\left(\frac{1}{3}, {\ell}^{3}, \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, 2 \cdot \ell\right)\right) \cdot \cos \left(\frac{K}{2}\right), U\right)double f(double J, double l, double K, double U) {
double r146926 = J;
double r146927 = l;
double r146928 = exp(r146927);
double r146929 = -r146927;
double r146930 = exp(r146929);
double r146931 = r146928 - r146930;
double r146932 = r146926 * r146931;
double r146933 = K;
double r146934 = 2.0;
double r146935 = r146933 / r146934;
double r146936 = cos(r146935);
double r146937 = r146932 * r146936;
double r146938 = U;
double r146939 = r146937 + r146938;
return r146939;
}
double f(double J, double l, double K, double U) {
double r146940 = J;
double r146941 = 0.3333333333333333;
double r146942 = l;
double r146943 = 3.0;
double r146944 = pow(r146942, r146943);
double r146945 = 0.016666666666666666;
double r146946 = 5.0;
double r146947 = pow(r146942, r146946);
double r146948 = 2.0;
double r146949 = r146948 * r146942;
double r146950 = fma(r146945, r146947, r146949);
double r146951 = fma(r146941, r146944, r146950);
double r146952 = K;
double r146953 = 2.0;
double r146954 = r146952 / r146953;
double r146955 = cos(r146954);
double r146956 = r146951 * r146955;
double r146957 = U;
double r146958 = fma(r146940, r146956, r146957);
return r146958;
}



Bits error versus J



Bits error versus l



Bits error versus K



Bits error versus U
Initial program 17.3
Taylor expanded around 0 0.4
Simplified0.4
rmApplied associate-*l*0.3
rmApplied fma-def0.3
Final simplification0.3
herbie shell --seed 2020045 +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))