\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 r82131 = J;
double r82132 = l;
double r82133 = exp(r82132);
double r82134 = -r82132;
double r82135 = exp(r82134);
double r82136 = r82133 - r82135;
double r82137 = r82131 * r82136;
double r82138 = K;
double r82139 = 2.0;
double r82140 = r82138 / r82139;
double r82141 = cos(r82140);
double r82142 = r82137 * r82141;
double r82143 = U;
double r82144 = r82142 + r82143;
return r82144;
}
double f(double J, double l, double K, double U) {
double r82145 = J;
double r82146 = 0.3333333333333333;
double r82147 = l;
double r82148 = 3.0;
double r82149 = pow(r82147, r82148);
double r82150 = 0.016666666666666666;
double r82151 = 5.0;
double r82152 = pow(r82147, r82151);
double r82153 = 2.0;
double r82154 = r82153 * r82147;
double r82155 = fma(r82150, r82152, r82154);
double r82156 = fma(r82146, r82149, r82155);
double r82157 = r82145 * r82156;
double r82158 = K;
double r82159 = 2.0;
double r82160 = r82158 / r82159;
double r82161 = cos(r82160);
double r82162 = U;
double r82163 = fma(r82157, r82161, r82162);
return r82163;
}



Bits error versus J



Bits error versus l



Bits error versus K



Bits error versus U
Initial program 17.2
Taylor expanded around 0 0.4
Simplified0.4
rmApplied fma-def0.4
Final simplification0.4
herbie shell --seed 2019325 +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))