\left(\left(-2.0 \cdot J\right) \cdot \cos \left(\frac{K}{2.0}\right)\right) \cdot \sqrt{1.0 + {\left(\frac{U}{\left(2.0 \cdot J\right) \cdot \cos \left(\frac{K}{2.0}\right)}\right)}^{2.0}}\begin{array}{l}
\mathbf{if}\;J \le 3.01385590437591 \cdot 10^{-302}:\\
\;\;\;\;\mathsf{hypot}\left({\left(\frac{U}{\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot 2.0}\right)}^{\left(\frac{2.0}{2}\right)}, \sqrt{1.0}\right) \cdot \left(\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot -2.0\right)\\
\mathbf{elif}\;J \le 3.7183310343194604 \cdot 10^{-247}:\\
\;\;\;\;-2.0 \cdot \left(U \cdot \sqrt{0.25}\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{hypot}\left({\left(\frac{U}{\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot 2.0}\right)}^{\left(\frac{2.0}{2}\right)}, \sqrt{1.0}\right) \cdot \left(\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot -2.0\right)\\
\end{array}double f(double J, double K, double U) {
double r5530252 = -2.0;
double r5530253 = J;
double r5530254 = r5530252 * r5530253;
double r5530255 = K;
double r5530256 = 2.0;
double r5530257 = r5530255 / r5530256;
double r5530258 = cos(r5530257);
double r5530259 = r5530254 * r5530258;
double r5530260 = 1.0;
double r5530261 = U;
double r5530262 = r5530256 * r5530253;
double r5530263 = r5530262 * r5530258;
double r5530264 = r5530261 / r5530263;
double r5530265 = pow(r5530264, r5530256);
double r5530266 = r5530260 + r5530265;
double r5530267 = sqrt(r5530266);
double r5530268 = r5530259 * r5530267;
return r5530268;
}
double f(double J, double K, double U) {
double r5530269 = J;
double r5530270 = 3.01385590437591e-302;
bool r5530271 = r5530269 <= r5530270;
double r5530272 = U;
double r5530273 = K;
double r5530274 = 2.0;
double r5530275 = r5530273 / r5530274;
double r5530276 = cos(r5530275);
double r5530277 = r5530276 * r5530269;
double r5530278 = r5530277 * r5530274;
double r5530279 = r5530272 / r5530278;
double r5530280 = 2.0;
double r5530281 = r5530274 / r5530280;
double r5530282 = pow(r5530279, r5530281);
double r5530283 = 1.0;
double r5530284 = sqrt(r5530283);
double r5530285 = hypot(r5530282, r5530284);
double r5530286 = -2.0;
double r5530287 = r5530277 * r5530286;
double r5530288 = r5530285 * r5530287;
double r5530289 = 3.7183310343194604e-247;
bool r5530290 = r5530269 <= r5530289;
double r5530291 = 0.25;
double r5530292 = sqrt(r5530291);
double r5530293 = r5530272 * r5530292;
double r5530294 = r5530286 * r5530293;
double r5530295 = r5530290 ? r5530294 : r5530288;
double r5530296 = r5530271 ? r5530288 : r5530295;
return r5530296;
}



Bits error versus J



Bits error versus K



Bits error versus U
Results
if J < 3.01385590437591e-302 or 3.7183310343194604e-247 < J Initial program 16.7
Simplified16.7
rmApplied add-sqr-sqrt16.7
Applied sqr-pow16.7
Applied hypot-def7.1
if 3.01385590437591e-302 < J < 3.7183310343194604e-247Initial program 43.5
Simplified43.5
Taylor expanded around inf 33.0
Final simplification8.1
herbie shell --seed 2019165 +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)))))