\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 9.480099451634948 \cdot 10^{-307}:\\
\;\;\;\;\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 5.462332884805273 \cdot 10^{-210}:\\
\;\;\;\;-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 r4206082 = -2.0;
double r4206083 = J;
double r4206084 = r4206082 * r4206083;
double r4206085 = K;
double r4206086 = 2.0;
double r4206087 = r4206085 / r4206086;
double r4206088 = cos(r4206087);
double r4206089 = r4206084 * r4206088;
double r4206090 = 1.0;
double r4206091 = U;
double r4206092 = r4206086 * r4206083;
double r4206093 = r4206092 * r4206088;
double r4206094 = r4206091 / r4206093;
double r4206095 = pow(r4206094, r4206086);
double r4206096 = r4206090 + r4206095;
double r4206097 = sqrt(r4206096);
double r4206098 = r4206089 * r4206097;
return r4206098;
}
double f(double J, double K, double U) {
double r4206099 = J;
double r4206100 = 9.480099451634948e-307;
bool r4206101 = r4206099 <= r4206100;
double r4206102 = -2.0;
double r4206103 = r4206102 * r4206099;
double r4206104 = K;
double r4206105 = 2.0;
double r4206106 = r4206104 / r4206105;
double r4206107 = cos(r4206106);
double r4206108 = r4206103 * r4206107;
double r4206109 = 1.0;
double r4206110 = U;
double r4206111 = r4206105 * r4206107;
double r4206112 = r4206111 * r4206099;
double r4206113 = r4206110 / r4206112;
double r4206114 = hypot(r4206109, r4206113);
double r4206115 = r4206108 * r4206114;
double r4206116 = 5.462332884805273e-210;
bool r4206117 = r4206099 <= r4206116;
double r4206118 = -r4206110;
double r4206119 = r4206117 ? r4206118 : r4206115;
double r4206120 = r4206101 ? r4206115 : r4206119;
return r4206120;
}



Bits error versus J



Bits error versus K



Bits error versus U
Results
if J < 9.480099451634948e-307 or 5.462332884805273e-210 < J Initial program 14.6
Simplified6.0
if 9.480099451634948e-307 < J < 5.462332884805273e-210Initial program 41.4
Simplified25.9
Taylor expanded around inf 34.2
Simplified34.2
Final simplification8.4
herbie shell --seed 2019133 +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)))))