Average Error: 17.5 → 8.4
Time: 39.6s
Precision: 64
\[\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 3.7061332287019414 \cdot 10^{-300}:\\ \;\;\;\;\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 1.34902824582098 \cdot 10^{-218}:\\ \;\;\;\;-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}\]
\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 3.7061332287019414 \cdot 10^{-300}:\\
\;\;\;\;\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 1.34902824582098 \cdot 10^{-218}:\\
\;\;\;\;-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 r9740512 = -2.0;
        double r9740513 = J;
        double r9740514 = r9740512 * r9740513;
        double r9740515 = K;
        double r9740516 = 2.0;
        double r9740517 = r9740515 / r9740516;
        double r9740518 = cos(r9740517);
        double r9740519 = r9740514 * r9740518;
        double r9740520 = 1.0;
        double r9740521 = U;
        double r9740522 = r9740516 * r9740513;
        double r9740523 = r9740522 * r9740518;
        double r9740524 = r9740521 / r9740523;
        double r9740525 = pow(r9740524, r9740516);
        double r9740526 = r9740520 + r9740525;
        double r9740527 = sqrt(r9740526);
        double r9740528 = r9740519 * r9740527;
        return r9740528;
}

double f(double J, double K, double U) {
        double r9740529 = J;
        double r9740530 = 3.7061332287019414e-300;
        bool r9740531 = r9740529 <= r9740530;
        double r9740532 = -2.0;
        double r9740533 = r9740532 * r9740529;
        double r9740534 = K;
        double r9740535 = 2.0;
        double r9740536 = r9740534 / r9740535;
        double r9740537 = cos(r9740536);
        double r9740538 = r9740533 * r9740537;
        double r9740539 = 1.0;
        double r9740540 = U;
        double r9740541 = r9740535 * r9740537;
        double r9740542 = r9740541 * r9740529;
        double r9740543 = r9740540 / r9740542;
        double r9740544 = hypot(r9740539, r9740543);
        double r9740545 = r9740538 * r9740544;
        double r9740546 = 1.34902824582098e-218;
        bool r9740547 = r9740529 <= r9740546;
        double r9740548 = -r9740540;
        double r9740549 = r9740547 ? r9740548 : r9740545;
        double r9740550 = r9740531 ? r9740545 : r9740549;
        return r9740550;
}

Error

Bits error versus J

Bits error versus K

Bits error versus U

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if J < 3.7061332287019414e-300 or 1.34902824582098e-218 < J

    1. Initial program 15.7

      \[\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}}\]
    2. Simplified6.6

      \[\leadsto \color{blue}{\mathsf{hypot}\left(1, \left(\frac{U}{J \cdot \left(\cos \left(\frac{K}{2}\right) \cdot 2\right)}\right)\right) \cdot \left(\cos \left(\frac{K}{2}\right) \cdot \left(-2 \cdot J\right)\right)}\]

    if 3.7061332287019414e-300 < J < 1.34902824582098e-218

    1. Initial program 42.3

      \[\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}}\]
    2. Simplified25.0

      \[\leadsto \color{blue}{\mathsf{hypot}\left(1, \left(\frac{U}{J \cdot \left(\cos \left(\frac{K}{2}\right) \cdot 2\right)}\right)\right) \cdot \left(\cos \left(\frac{K}{2}\right) \cdot \left(-2 \cdot J\right)\right)}\]
    3. Taylor expanded around inf 33.2

      \[\leadsto \color{blue}{-1 \cdot U}\]
    4. Simplified33.2

      \[\leadsto \color{blue}{-U}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification8.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;J \le 3.7061332287019414 \cdot 10^{-300}:\\ \;\;\;\;\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 1.34902824582098 \cdot 10^{-218}:\\ \;\;\;\;-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}\]

Reproduce

herbie shell --seed 2019121 +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)))))