\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 r142934 = -2.0;
double r142935 = J;
double r142936 = r142934 * r142935;
double r142937 = K;
double r142938 = 2.0;
double r142939 = r142937 / r142938;
double r142940 = cos(r142939);
double r142941 = r142936 * r142940;
double r142942 = 1.0;
double r142943 = U;
double r142944 = r142938 * r142935;
double r142945 = r142944 * r142940;
double r142946 = r142943 / r142945;
double r142947 = pow(r142946, r142938);
double r142948 = r142942 + r142947;
double r142949 = sqrt(r142948);
double r142950 = r142941 * r142949;
return r142950;
}
double f(double J, double K, double U) {
double r142951 = -2.0;
double r142952 = J;
double r142953 = r142951 * r142952;
double r142954 = K;
double r142955 = 2.0;
double r142956 = r142954 / r142955;
double r142957 = cos(r142956);
double r142958 = r142953 * r142957;
double r142959 = 1.0;
double r142960 = sqrt(r142959);
double r142961 = U;
double r142962 = r142955 * r142952;
double r142963 = r142962 * r142957;
double r142964 = r142961 / r142963;
double r142965 = 2.0;
double r142966 = r142955 / r142965;
double r142967 = pow(r142964, r142966);
double r142968 = hypot(r142960, r142967);
double r142969 = r142958 * r142968;
return r142969;
}



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.0
Final simplification8.0
herbie shell --seed 2020089 +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)))))