\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 -6.176979890408271 \cdot 10^{-120}:\\
\;\;\;\;\sqrt{1 + \frac{U}{\left(J + J\right) \cdot \cos \left(\frac{K}{2}\right)} \cdot \frac{U}{\left(J + J\right) \cdot \cos \left(\frac{K}{2}\right)}} \cdot \left(\cos \left(\frac{K}{2}\right) \cdot \left(-2 \cdot J\right)\right)\\
\mathbf{elif}\;J \le 5.081030145306157 \cdot 10^{-231}:\\
\;\;\;\;-U\\
\mathbf{else}:\\
\;\;\;\;\sqrt{1 + \frac{U}{\left(J + J\right) \cdot \cos \left(\frac{K}{2}\right)} \cdot \frac{U}{\left(J + J\right) \cdot \cos \left(\frac{K}{2}\right)}} \cdot \left(\cos \left(\frac{K}{2}\right) \cdot \left(-2 \cdot J\right)\right)\\
\end{array}double f(double J, double K, double U) {
double r3467828 = -2.0;
double r3467829 = J;
double r3467830 = r3467828 * r3467829;
double r3467831 = K;
double r3467832 = 2.0;
double r3467833 = r3467831 / r3467832;
double r3467834 = cos(r3467833);
double r3467835 = r3467830 * r3467834;
double r3467836 = 1.0;
double r3467837 = U;
double r3467838 = r3467832 * r3467829;
double r3467839 = r3467838 * r3467834;
double r3467840 = r3467837 / r3467839;
double r3467841 = pow(r3467840, r3467832);
double r3467842 = r3467836 + r3467841;
double r3467843 = sqrt(r3467842);
double r3467844 = r3467835 * r3467843;
return r3467844;
}
double f(double J, double K, double U) {
double r3467845 = J;
double r3467846 = -6.176979890408271e-120;
bool r3467847 = r3467845 <= r3467846;
double r3467848 = 1.0;
double r3467849 = U;
double r3467850 = r3467845 + r3467845;
double r3467851 = K;
double r3467852 = 2.0;
double r3467853 = r3467851 / r3467852;
double r3467854 = cos(r3467853);
double r3467855 = r3467850 * r3467854;
double r3467856 = r3467849 / r3467855;
double r3467857 = r3467856 * r3467856;
double r3467858 = r3467848 + r3467857;
double r3467859 = sqrt(r3467858);
double r3467860 = -2.0;
double r3467861 = r3467860 * r3467845;
double r3467862 = r3467854 * r3467861;
double r3467863 = r3467859 * r3467862;
double r3467864 = 5.081030145306157e-231;
bool r3467865 = r3467845 <= r3467864;
double r3467866 = -r3467849;
double r3467867 = r3467865 ? r3467866 : r3467863;
double r3467868 = r3467847 ? r3467863 : r3467867;
return r3467868;
}



Bits error versus J



Bits error versus K



Bits error versus U
Results
if J < -6.176979890408271e-120 or 5.081030145306157e-231 < J Initial program 11.5
Simplified11.5
if -6.176979890408271e-120 < J < 5.081030145306157e-231Initial program 37.9
Simplified37.9
Taylor expanded around inf 35.4
Simplified35.4
Final simplification16.5
herbie shell --seed 2019130
(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)))))