\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}\;U \le -7.162239869679763003503637235692728069393 \cdot 10^{262}:\\
\;\;\;\;-2 \cdot \left(\sqrt{0.25} \cdot U\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{hypot}\left({\left(\frac{U}{2 \cdot \left(\cos \left(\frac{K}{2}\right) \cdot J\right)}\right)}^{\left(\frac{2}{2}\right)}, \sqrt{1}\right) \cdot \left(-2 \cdot \left(\cos \left(\frac{K}{2}\right) \cdot J\right)\right)\\
\end{array}double f(double J, double K, double U) {
double r7323614 = -2.0;
double r7323615 = J;
double r7323616 = r7323614 * r7323615;
double r7323617 = K;
double r7323618 = 2.0;
double r7323619 = r7323617 / r7323618;
double r7323620 = cos(r7323619);
double r7323621 = r7323616 * r7323620;
double r7323622 = 1.0;
double r7323623 = U;
double r7323624 = r7323618 * r7323615;
double r7323625 = r7323624 * r7323620;
double r7323626 = r7323623 / r7323625;
double r7323627 = pow(r7323626, r7323618);
double r7323628 = r7323622 + r7323627;
double r7323629 = sqrt(r7323628);
double r7323630 = r7323621 * r7323629;
return r7323630;
}
double f(double J, double K, double U) {
double r7323631 = U;
double r7323632 = -7.162239869679763e+262;
bool r7323633 = r7323631 <= r7323632;
double r7323634 = -2.0;
double r7323635 = 0.25;
double r7323636 = sqrt(r7323635);
double r7323637 = r7323636 * r7323631;
double r7323638 = r7323634 * r7323637;
double r7323639 = 2.0;
double r7323640 = K;
double r7323641 = r7323640 / r7323639;
double r7323642 = cos(r7323641);
double r7323643 = J;
double r7323644 = r7323642 * r7323643;
double r7323645 = r7323639 * r7323644;
double r7323646 = r7323631 / r7323645;
double r7323647 = 2.0;
double r7323648 = r7323639 / r7323647;
double r7323649 = pow(r7323646, r7323648);
double r7323650 = 1.0;
double r7323651 = sqrt(r7323650);
double r7323652 = hypot(r7323649, r7323651);
double r7323653 = r7323634 * r7323644;
double r7323654 = r7323652 * r7323653;
double r7323655 = r7323633 ? r7323638 : r7323654;
return r7323655;
}



Bits error versus J



Bits error versus K



Bits error versus U
Results
if U < -7.162239869679763e+262Initial program 42.4
Simplified42.4
Taylor expanded around inf 31.7
if -7.162239869679763e+262 < U Initial program 17.1
Simplified17.1
rmApplied add-sqr-sqrt17.1
Applied sqr-pow17.1
Applied hypot-def7.3
Final simplification8.2
herbie shell --seed 2019172 +o rules:numerics
(FPCore (J K U)
:name "Maksimov and Kolovsky, Equation (3)"
(* (* (* -2.0 J) (cos (/ K 2.0))) (sqrt (+ 1.0 (pow (/ U (* (* 2.0 J) (cos (/ K 2.0)))) 2.0)))))