\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 r125301 = -2.0;
double r125302 = J;
double r125303 = r125301 * r125302;
double r125304 = K;
double r125305 = 2.0;
double r125306 = r125304 / r125305;
double r125307 = cos(r125306);
double r125308 = r125303 * r125307;
double r125309 = 1.0;
double r125310 = U;
double r125311 = r125305 * r125302;
double r125312 = r125311 * r125307;
double r125313 = r125310 / r125312;
double r125314 = pow(r125313, r125305);
double r125315 = r125309 + r125314;
double r125316 = sqrt(r125315);
double r125317 = r125308 * r125316;
return r125317;
}
double f(double J, double K, double U) {
double r125318 = -2.0;
double r125319 = J;
double r125320 = r125318 * r125319;
double r125321 = K;
double r125322 = 2.0;
double r125323 = r125321 / r125322;
double r125324 = cos(r125323);
double r125325 = r125320 * r125324;
double r125326 = 1.0;
double r125327 = sqrt(r125326);
double r125328 = U;
double r125329 = r125322 * r125319;
double r125330 = r125329 * r125324;
double r125331 = r125328 / r125330;
double r125332 = 2.0;
double r125333 = r125322 / r125332;
double r125334 = pow(r125331, r125333);
double r125335 = hypot(r125327, r125334);
double r125336 = r125325 * r125335;
return r125336;
}



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