\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}}\begin{array}{l}
\mathbf{if}\;J \le 3.7061332287019414 \cdot 10^{-300}:\\
\;\;\;\;\left(\left(-2 \cdot J\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot \mathsf{hypot}\left(1, \left(\frac{U}{\left(2 \cdot \cos \left(\frac{K}{2}\right)\right) \cdot J}\right)\right)\\
\mathbf{elif}\;J \le 1.34902824582098 \cdot 10^{-218}:\\
\;\;\;\;-U\\
\mathbf{else}:\\
\;\;\;\;\left(\left(-2 \cdot J\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot \mathsf{hypot}\left(1, \left(\frac{U}{\left(2 \cdot \cos \left(\frac{K}{2}\right)\right) \cdot J}\right)\right)\\
\end{array}double f(double J, double K, double U) {
double r9740512 = -2.0;
double r9740513 = J;
double r9740514 = r9740512 * r9740513;
double r9740515 = K;
double r9740516 = 2.0;
double r9740517 = r9740515 / r9740516;
double r9740518 = cos(r9740517);
double r9740519 = r9740514 * r9740518;
double r9740520 = 1.0;
double r9740521 = U;
double r9740522 = r9740516 * r9740513;
double r9740523 = r9740522 * r9740518;
double r9740524 = r9740521 / r9740523;
double r9740525 = pow(r9740524, r9740516);
double r9740526 = r9740520 + r9740525;
double r9740527 = sqrt(r9740526);
double r9740528 = r9740519 * r9740527;
return r9740528;
}
double f(double J, double K, double U) {
double r9740529 = J;
double r9740530 = 3.7061332287019414e-300;
bool r9740531 = r9740529 <= r9740530;
double r9740532 = -2.0;
double r9740533 = r9740532 * r9740529;
double r9740534 = K;
double r9740535 = 2.0;
double r9740536 = r9740534 / r9740535;
double r9740537 = cos(r9740536);
double r9740538 = r9740533 * r9740537;
double r9740539 = 1.0;
double r9740540 = U;
double r9740541 = r9740535 * r9740537;
double r9740542 = r9740541 * r9740529;
double r9740543 = r9740540 / r9740542;
double r9740544 = hypot(r9740539, r9740543);
double r9740545 = r9740538 * r9740544;
double r9740546 = 1.34902824582098e-218;
bool r9740547 = r9740529 <= r9740546;
double r9740548 = -r9740540;
double r9740549 = r9740547 ? r9740548 : r9740545;
double r9740550 = r9740531 ? r9740545 : r9740549;
return r9740550;
}



Bits error versus J



Bits error versus K



Bits error versus U
Results
if J < 3.7061332287019414e-300 or 1.34902824582098e-218 < J Initial program 15.7
Simplified6.6
if 3.7061332287019414e-300 < J < 1.34902824582098e-218Initial program 42.3
Simplified25.0
Taylor expanded around inf 33.2
Simplified33.2
Final simplification8.4
herbie shell --seed 2019121 +o rules:numerics
(FPCore (J K U)
:name "Maksimov and Kolovsky, Equation (3)"
(* (* (* -2 J) (cos (/ K 2))) (sqrt (+ 1 (pow (/ U (* (* 2 J) (cos (/ K 2)))) 2)))))