\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + UU + \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, \mathsf{fma}\left(2, \ell, \frac{1}{3} \cdot {\ell}^{3}\right)\right) \cdot \left(J \cdot \cos \left(\frac{K}{2}\right)\right)double f(double J, double l, double K, double U) {
double r63856 = J;
double r63857 = l;
double r63858 = exp(r63857);
double r63859 = -r63857;
double r63860 = exp(r63859);
double r63861 = r63858 - r63860;
double r63862 = r63856 * r63861;
double r63863 = K;
double r63864 = 2.0;
double r63865 = r63863 / r63864;
double r63866 = cos(r63865);
double r63867 = r63862 * r63866;
double r63868 = U;
double r63869 = r63867 + r63868;
return r63869;
}
double f(double J, double l, double K, double U) {
double r63870 = U;
double r63871 = 0.016666666666666666;
double r63872 = l;
double r63873 = 5.0;
double r63874 = pow(r63872, r63873);
double r63875 = 2.0;
double r63876 = 0.3333333333333333;
double r63877 = 3.0;
double r63878 = pow(r63872, r63877);
double r63879 = r63876 * r63878;
double r63880 = fma(r63875, r63872, r63879);
double r63881 = fma(r63871, r63874, r63880);
double r63882 = J;
double r63883 = K;
double r63884 = 2.0;
double r63885 = r63883 / r63884;
double r63886 = cos(r63885);
double r63887 = r63882 * r63886;
double r63888 = r63881 * r63887;
double r63889 = r63870 + r63888;
return r63889;
}



Bits error versus J



Bits error versus l



Bits error versus K



Bits error versus U
Initial program 17.5
Simplified17.5
Taylor expanded around 0 0.4
Simplified0.4
rmApplied fma-udef0.4
rmApplied pow10.4
Applied pow10.4
Applied pow10.4
Applied pow-prod-down0.4
Applied pow-prod-down0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019212 +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))