\left(\left(-2 \cdot J\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot \sqrt{1 + {\left(\frac{U}{\left(2 \cdot J\right) \cdot \cos \left(\frac{K}{2}\right)}\right)}^{2}}\left(\left(-2 \cdot J\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot \mathsf{hypot}\left(\sqrt{1}, {\left(\frac{U}{\left(2 \cdot J\right) \cdot \cos \left(\frac{K}{2}\right)}\right)}^{\left(\frac{2}{2}\right)}\right)double f(double J, double K, double U) {
double r257049 = -2.0;
double r257050 = J;
double r257051 = r257049 * r257050;
double r257052 = K;
double r257053 = 2.0;
double r257054 = r257052 / r257053;
double r257055 = cos(r257054);
double r257056 = r257051 * r257055;
double r257057 = 1.0;
double r257058 = U;
double r257059 = r257053 * r257050;
double r257060 = r257059 * r257055;
double r257061 = r257058 / r257060;
double r257062 = pow(r257061, r257053);
double r257063 = r257057 + r257062;
double r257064 = sqrt(r257063);
double r257065 = r257056 * r257064;
return r257065;
}
double f(double J, double K, double U) {
double r257066 = -2.0;
double r257067 = J;
double r257068 = r257066 * r257067;
double r257069 = K;
double r257070 = 2.0;
double r257071 = r257069 / r257070;
double r257072 = cos(r257071);
double r257073 = r257068 * r257072;
double r257074 = 1.0;
double r257075 = sqrt(r257074);
double r257076 = U;
double r257077 = r257070 * r257067;
double r257078 = r257077 * r257072;
double r257079 = r257076 / r257078;
double r257080 = 2.0;
double r257081 = r257070 / r257080;
double r257082 = pow(r257079, r257081);
double r257083 = hypot(r257075, r257082);
double r257084 = r257073 * r257083;
return r257084;
}



Bits error versus J



Bits error versus K



Bits error versus U
Results
Initial program 18.0
rmApplied sqr-pow18.0
Applied add-sqr-sqrt18.0
Applied hypot-def8.1
Final simplification8.1
herbie shell --seed 2020039 +o rules:numerics
(FPCore (J K U)
:name "Maksimov and Kolovsky, Equation (3)"
:precision binary64
(* (* (* -2 J) (cos (/ K 2))) (sqrt (+ 1 (pow (/ U (* (* 2 J) (cos (/ K 2)))) 2)))))