\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 -1.1220435713799319 \cdot 10^{-287}:\\
\;\;\;\;\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 2.1838215657304018 \cdot 10^{-234}:\\
\;\;\;\;-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 r22966109 = -2.0;
double r22966110 = J;
double r22966111 = r22966109 * r22966110;
double r22966112 = K;
double r22966113 = 2.0;
double r22966114 = r22966112 / r22966113;
double r22966115 = cos(r22966114);
double r22966116 = r22966111 * r22966115;
double r22966117 = 1.0;
double r22966118 = U;
double r22966119 = r22966113 * r22966110;
double r22966120 = r22966119 * r22966115;
double r22966121 = r22966118 / r22966120;
double r22966122 = pow(r22966121, r22966113);
double r22966123 = r22966117 + r22966122;
double r22966124 = sqrt(r22966123);
double r22966125 = r22966116 * r22966124;
return r22966125;
}
double f(double J, double K, double U) {
double r22966126 = J;
double r22966127 = -1.1220435713799319e-287;
bool r22966128 = r22966126 <= r22966127;
double r22966129 = -2.0;
double r22966130 = r22966129 * r22966126;
double r22966131 = K;
double r22966132 = 2.0;
double r22966133 = r22966131 / r22966132;
double r22966134 = cos(r22966133);
double r22966135 = r22966130 * r22966134;
double r22966136 = 1.0;
double r22966137 = U;
double r22966138 = r22966132 * r22966134;
double r22966139 = r22966138 * r22966126;
double r22966140 = r22966137 / r22966139;
double r22966141 = hypot(r22966136, r22966140);
double r22966142 = r22966135 * r22966141;
double r22966143 = 2.1838215657304018e-234;
bool r22966144 = r22966126 <= r22966143;
double r22966145 = -r22966137;
double r22966146 = r22966144 ? r22966145 : r22966142;
double r22966147 = r22966128 ? r22966142 : r22966146;
return r22966147;
}



Bits error versus J



Bits error versus K



Bits error versus U
Results
if J < -1.1220435713799319e-287 or 2.1838215657304018e-234 < J Initial program 14.8
Simplified5.7
if -1.1220435713799319e-287 < J < 2.1838215657304018e-234Initial program 42.1
Simplified27.2
Taylor expanded around -inf 33.5
Simplified33.5
Final simplification7.8
herbie shell --seed 2019125 +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)))))