\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 r237951 = J;
double r237952 = l;
double r237953 = exp(r237952);
double r237954 = -r237952;
double r237955 = exp(r237954);
double r237956 = r237953 - r237955;
double r237957 = r237951 * r237956;
double r237958 = K;
double r237959 = 2.0;
double r237960 = r237958 / r237959;
double r237961 = cos(r237960);
double r237962 = r237957 * r237961;
double r237963 = U;
double r237964 = r237962 + r237963;
return r237964;
}
double f(double J, double l, double K, double U) {
double r237965 = J;
double r237966 = 0.3333333333333333;
double r237967 = l;
double r237968 = 3.0;
double r237969 = pow(r237967, r237968);
double r237970 = 0.016666666666666666;
double r237971 = 5.0;
double r237972 = pow(r237967, r237971);
double r237973 = 2.0;
double r237974 = r237973 * r237967;
double r237975 = fma(r237970, r237972, r237974);
double r237976 = fma(r237966, r237969, r237975);
double r237977 = r237965 * r237976;
double r237978 = K;
double r237979 = 2.0;
double r237980 = r237978 / r237979;
double r237981 = cos(r237980);
double r237982 = U;
double r237983 = fma(r237977, r237981, r237982);
return r237983;
}



Bits error versus J



Bits error versus l



Bits error versus K



Bits error versus U
Initial program 17.3
Simplified17.3
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020020 +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))