Average Error: 16.7 → 7.9
Time: 43.4s
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.6227052960490716 \cdot 10^{-308}:\\ \;\;\;\;\left(\left(-2 \cdot J\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot \sqrt{1^2 + \left(\frac{U}{\left(2 \cdot \cos \left(\frac{K}{2}\right)\right) \cdot J}\right)^2}^*\\ \mathbf{elif}\;J \le 1.5022382566110874 \cdot 10^{-238}:\\ \;\;\;\;-U\\ \mathbf{else}:\\ \;\;\;\;\left(\left(-2 \cdot J\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot \sqrt{1^2 + \left(\frac{U}{\left(2 \cdot \cos \left(\frac{K}{2}\right)\right) \cdot J}\right)^2}^*\\ \end{array}\]
double f(double J, double K, double U) {
        double r26466745 = -2.0;
        double r26466746 = J;
        double r26466747 = r26466745 * r26466746;
        double r26466748 = K;
        double r26466749 = 2.0;
        double r26466750 = r26466748 / r26466749;
        double r26466751 = cos(r26466750);
        double r26466752 = r26466747 * r26466751;
        double r26466753 = 1.0;
        double r26466754 = U;
        double r26466755 = r26466749 * r26466746;
        double r26466756 = r26466755 * r26466751;
        double r26466757 = r26466754 / r26466756;
        double r26466758 = pow(r26466757, r26466749);
        double r26466759 = r26466753 + r26466758;
        double r26466760 = sqrt(r26466759);
        double r26466761 = r26466752 * r26466760;
        return r26466761;
}

double f(double J, double K, double U) {
        double r26466762 = J;
        double r26466763 = -3.6227052960490716e-308;
        bool r26466764 = r26466762 <= r26466763;
        double r26466765 = -2.0;
        double r26466766 = r26466765 * r26466762;
        double r26466767 = K;
        double r26466768 = 2.0;
        double r26466769 = r26466767 / r26466768;
        double r26466770 = cos(r26466769);
        double r26466771 = r26466766 * r26466770;
        double r26466772 = 1.0;
        double r26466773 = U;
        double r26466774 = r26466768 * r26466770;
        double r26466775 = r26466774 * r26466762;
        double r26466776 = r26466773 / r26466775;
        double r26466777 = hypot(r26466772, r26466776);
        double r26466778 = r26466771 * r26466777;
        double r26466779 = 1.5022382566110874e-238;
        bool r26466780 = r26466762 <= r26466779;
        double r26466781 = -r26466773;
        double r26466782 = r26466780 ? r26466781 : r26466778;
        double r26466783 = r26466764 ? r26466778 : r26466782;
        return r26466783;
}

\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.6227052960490716 \cdot 10^{-308}:\\
\;\;\;\;\left(\left(-2 \cdot J\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot \sqrt{1^2 + \left(\frac{U}{\left(2 \cdot \cos \left(\frac{K}{2}\right)\right) \cdot J}\right)^2}^*\\

\mathbf{elif}\;J \le 1.5022382566110874 \cdot 10^{-238}:\\
\;\;\;\;-U\\

\mathbf{else}:\\
\;\;\;\;\left(\left(-2 \cdot J\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot \sqrt{1^2 + \left(\frac{U}{\left(2 \cdot \cos \left(\frac{K}{2}\right)\right) \cdot J}\right)^2}^*\\

\end{array}

Error

Bits error versus J

Bits error versus K

Bits error versus U

Derivation

  1. Split input into 2 regimes
  2. if J < -3.6227052960490716e-308 or 1.5022382566110874e-238 < J

    1. Initial program 15.0

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

      \[\leadsto \color{blue}{\sqrt{1^2 + \left(\frac{U}{J \cdot \left(\cos \left(\frac{K}{2}\right) \cdot 2\right)}\right)^2}^* \cdot \left(\cos \left(\frac{K}{2}\right) \cdot \left(-2 \cdot J\right)\right)}\]

    if -3.6227052960490716e-308 < J < 1.5022382566110874e-238

    1. Initial program 41.5

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

      \[\leadsto \color{blue}{\sqrt{1^2 + \left(\frac{U}{J \cdot \left(\cos \left(\frac{K}{2}\right) \cdot 2\right)}\right)^2}^* \cdot \left(\cos \left(\frac{K}{2}\right) \cdot \left(-2 \cdot J\right)\right)}\]
    3. Using strategy rm
    4. Applied add-sqr-sqrt26.4

      \[\leadsto \color{blue}{\left(\sqrt{\sqrt{1^2 + \left(\frac{U}{J \cdot \left(\cos \left(\frac{K}{2}\right) \cdot 2\right)}\right)^2}^*} \cdot \sqrt{\sqrt{1^2 + \left(\frac{U}{J \cdot \left(\cos \left(\frac{K}{2}\right) \cdot 2\right)}\right)^2}^*}\right)} \cdot \left(\cos \left(\frac{K}{2}\right) \cdot \left(-2 \cdot J\right)\right)\]
    5. Applied associate-*l*26.4

      \[\leadsto \color{blue}{\sqrt{\sqrt{1^2 + \left(\frac{U}{J \cdot \left(\cos \left(\frac{K}{2}\right) \cdot 2\right)}\right)^2}^*} \cdot \left(\sqrt{\sqrt{1^2 + \left(\frac{U}{J \cdot \left(\cos \left(\frac{K}{2}\right) \cdot 2\right)}\right)^2}^*} \cdot \left(\cos \left(\frac{K}{2}\right) \cdot \left(-2 \cdot J\right)\right)\right)}\]
    6. Taylor expanded around -inf 33.7

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;J \le -3.6227052960490716 \cdot 10^{-308}:\\ \;\;\;\;\left(\left(-2 \cdot J\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot \sqrt{1^2 + \left(\frac{U}{\left(2 \cdot \cos \left(\frac{K}{2}\right)\right) \cdot J}\right)^2}^*\\ \mathbf{elif}\;J \le 1.5022382566110874 \cdot 10^{-238}:\\ \;\;\;\;-U\\ \mathbf{else}:\\ \;\;\;\;\left(\left(-2 \cdot J\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot \sqrt{1^2 + \left(\frac{U}{\left(2 \cdot \cos \left(\frac{K}{2}\right)\right) \cdot J}\right)^2}^*\\ \end{array}\]

Reproduce

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