\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 r129087 = J;
double r129088 = l;
double r129089 = exp(r129088);
double r129090 = -r129088;
double r129091 = exp(r129090);
double r129092 = r129089 - r129091;
double r129093 = r129087 * r129092;
double r129094 = K;
double r129095 = 2.0;
double r129096 = r129094 / r129095;
double r129097 = cos(r129096);
double r129098 = r129093 * r129097;
double r129099 = U;
double r129100 = r129098 + r129099;
return r129100;
}
double f(double J, double l, double K, double U) {
double r129101 = J;
double r129102 = 0.3333333333333333;
double r129103 = l;
double r129104 = 3.0;
double r129105 = pow(r129103, r129104);
double r129106 = 0.016666666666666666;
double r129107 = 5.0;
double r129108 = pow(r129103, r129107);
double r129109 = 2.0;
double r129110 = r129109 * r129103;
double r129111 = fma(r129106, r129108, r129110);
double r129112 = fma(r129102, r129105, r129111);
double r129113 = r129101 * r129112;
double r129114 = K;
double r129115 = 2.0;
double r129116 = r129114 / r129115;
double r129117 = cos(r129116);
double r129118 = U;
double r129119 = fma(r129113, r129117, r129118);
return r129119;
}



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.5
Simplified0.5
rmApplied fma-udef0.5
rmApplied fma-def0.5
Final simplification0.5
herbie shell --seed 2020047 +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))