Average Error: 16.8 → 7.8
Time: 1.3m
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 -1.1220435713799319 \cdot 10^{-287}:\\ \;\;\;\;\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 2.1838215657304018 \cdot 10^{-234}:\\ \;\;\;\;-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 -1.1220435713799319 \cdot 10^{-287}:\\
\;\;\;\;\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 2.1838215657304018 \cdot 10^{-234}:\\
\;\;\;\;-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 r22966109 = -2.0;
        double r22966110 = J;
        double r22966111 = r22966109 * r22966110;
        double r22966112 = K;
        double r22966113 = 2.0;
        double r22966114 = r22966112 / r22966113;
        double r22966115 = cos(r22966114);
        double r22966116 = r22966111 * r22966115;
        double r22966117 = 1.0;
        double r22966118 = U;
        double r22966119 = r22966113 * r22966110;
        double r22966120 = r22966119 * r22966115;
        double r22966121 = r22966118 / r22966120;
        double r22966122 = pow(r22966121, r22966113);
        double r22966123 = r22966117 + r22966122;
        double r22966124 = sqrt(r22966123);
        double r22966125 = r22966116 * r22966124;
        return r22966125;
}

double f(double J, double K, double U) {
        double r22966126 = J;
        double r22966127 = -1.1220435713799319e-287;
        bool r22966128 = r22966126 <= r22966127;
        double r22966129 = -2.0;
        double r22966130 = r22966129 * r22966126;
        double r22966131 = K;
        double r22966132 = 2.0;
        double r22966133 = r22966131 / r22966132;
        double r22966134 = cos(r22966133);
        double r22966135 = r22966130 * r22966134;
        double r22966136 = 1.0;
        double r22966137 = U;
        double r22966138 = r22966132 * r22966134;
        double r22966139 = r22966138 * r22966126;
        double r22966140 = r22966137 / r22966139;
        double r22966141 = hypot(r22966136, r22966140);
        double r22966142 = r22966135 * r22966141;
        double r22966143 = 2.1838215657304018e-234;
        bool r22966144 = r22966126 <= r22966143;
        double r22966145 = -r22966137;
        double r22966146 = r22966144 ? r22966145 : r22966142;
        double r22966147 = r22966128 ? r22966142 : r22966146;
        return r22966147;
}

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 < -1.1220435713799319e-287 or 2.1838215657304018e-234 < J

    1. Initial program 14.8

      \[\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. Simplified5.7

      \[\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 -1.1220435713799319e-287 < J < 2.1838215657304018e-234

    1. Initial program 42.1

      \[\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. Simplified27.2

      \[\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.5

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;J \le -1.1220435713799319 \cdot 10^{-287}:\\ \;\;\;\;\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 2.1838215657304018 \cdot 10^{-234}:\\ \;\;\;\;-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 2019125 +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)))))