\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 -2.046031859409107010680697733891579614724 \cdot 10^{163}:\\
\;\;\;\;-2 \cdot \left(\sqrt{0.25} \cdot U\right)\\
\mathbf{elif}\;U \le 3.699568924009128678344806274852137825163 \cdot 10^{130}:\\
\;\;\;\;\sqrt{1 + {\left(\frac{U}{2 \cdot \left(J \cdot \cos \left(\frac{K}{2}\right)\right)}\right)}^{2}} \cdot \left(\left(J \cdot \cos \left(\frac{K}{2}\right)\right) \cdot -2\right)\\
\mathbf{else}:\\
\;\;\;\;-2 \cdot \left(\sqrt{0.25} \cdot U\right)\\
\end{array}double f(double J, double K, double U) {
double r6379911 = -2.0;
double r6379912 = J;
double r6379913 = r6379911 * r6379912;
double r6379914 = K;
double r6379915 = 2.0;
double r6379916 = r6379914 / r6379915;
double r6379917 = cos(r6379916);
double r6379918 = r6379913 * r6379917;
double r6379919 = 1.0;
double r6379920 = U;
double r6379921 = r6379915 * r6379912;
double r6379922 = r6379921 * r6379917;
double r6379923 = r6379920 / r6379922;
double r6379924 = pow(r6379923, r6379915);
double r6379925 = r6379919 + r6379924;
double r6379926 = sqrt(r6379925);
double r6379927 = r6379918 * r6379926;
return r6379927;
}
double f(double J, double K, double U) {
double r6379928 = U;
double r6379929 = -2.046031859409107e+163;
bool r6379930 = r6379928 <= r6379929;
double r6379931 = -2.0;
double r6379932 = 0.25;
double r6379933 = sqrt(r6379932);
double r6379934 = r6379933 * r6379928;
double r6379935 = r6379931 * r6379934;
double r6379936 = 3.6995689240091287e+130;
bool r6379937 = r6379928 <= r6379936;
double r6379938 = 1.0;
double r6379939 = 2.0;
double r6379940 = J;
double r6379941 = K;
double r6379942 = r6379941 / r6379939;
double r6379943 = cos(r6379942);
double r6379944 = r6379940 * r6379943;
double r6379945 = r6379939 * r6379944;
double r6379946 = r6379928 / r6379945;
double r6379947 = pow(r6379946, r6379939);
double r6379948 = r6379938 + r6379947;
double r6379949 = sqrt(r6379948);
double r6379950 = r6379944 * r6379931;
double r6379951 = r6379949 * r6379950;
double r6379952 = r6379937 ? r6379951 : r6379935;
double r6379953 = r6379930 ? r6379935 : r6379952;
return r6379953;
}



Bits error versus J



Bits error versus K



Bits error versus U
Results
if U < -2.046031859409107e+163 or 3.6995689240091287e+130 < U Initial program 40.2
Simplified40.2
Taylor expanded around inf 35.8
if -2.046031859409107e+163 < U < 3.6995689240091287e+130Initial program 10.2
Simplified10.2
Final simplification16.8
herbie shell --seed 2019168
(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)))))