Average Error: 16.7 → 16.0
Time: 2.4m
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.017703287912558 \cdot 10^{-220}:\\ \;\;\;\;\left(\cos \left(\frac{K}{2}\right) \cdot J\right) \cdot \left(-2 \cdot \sqrt{1 + \frac{U}{2 \cdot \left(\cos \left(\frac{K}{2}\right) \cdot J\right)} \cdot \frac{U}{2 \cdot \left(\cos \left(\frac{K}{2}\right) \cdot J\right)}}\right)\\ \mathbf{elif}\;J \le 3.5282736756142025 \cdot 10^{-174}:\\ \;\;\;\;-U\\ \mathbf{else}:\\ \;\;\;\;\left(\cos \left(\frac{K}{2}\right) \cdot J\right) \cdot \left(-2 \cdot \sqrt{1 + \frac{U}{2 \cdot \left(\cos \left(\frac{K}{2}\right) \cdot J\right)} \cdot \frac{U}{2 \cdot \left(\cos \left(\frac{K}{2}\right) \cdot J\right)}}\right)\\ \end{array}\]
double f(double J, double K, double U) {
        double r24835030 = -2.0;
        double r24835031 = J;
        double r24835032 = r24835030 * r24835031;
        double r24835033 = K;
        double r24835034 = 2.0;
        double r24835035 = r24835033 / r24835034;
        double r24835036 = cos(r24835035);
        double r24835037 = r24835032 * r24835036;
        double r24835038 = 1.0;
        double r24835039 = U;
        double r24835040 = r24835034 * r24835031;
        double r24835041 = r24835040 * r24835036;
        double r24835042 = r24835039 / r24835041;
        double r24835043 = pow(r24835042, r24835034);
        double r24835044 = r24835038 + r24835043;
        double r24835045 = sqrt(r24835044);
        double r24835046 = r24835037 * r24835045;
        return r24835046;
}

double f(double J, double K, double U) {
        double r24835047 = J;
        double r24835048 = -1.017703287912558e-220;
        bool r24835049 = r24835047 <= r24835048;
        double r24835050 = K;
        double r24835051 = 2.0;
        double r24835052 = r24835050 / r24835051;
        double r24835053 = cos(r24835052);
        double r24835054 = r24835053 * r24835047;
        double r24835055 = -2.0;
        double r24835056 = 1.0;
        double r24835057 = U;
        double r24835058 = r24835051 * r24835054;
        double r24835059 = r24835057 / r24835058;
        double r24835060 = r24835059 * r24835059;
        double r24835061 = r24835056 + r24835060;
        double r24835062 = sqrt(r24835061);
        double r24835063 = r24835055 * r24835062;
        double r24835064 = r24835054 * r24835063;
        double r24835065 = 3.5282736756142025e-174;
        bool r24835066 = r24835047 <= r24835065;
        double r24835067 = -r24835057;
        double r24835068 = r24835066 ? r24835067 : r24835064;
        double r24835069 = r24835049 ? r24835064 : r24835068;
        return r24835069;
}

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

\mathbf{elif}\;J \le 3.5282736756142025 \cdot 10^{-174}:\\
\;\;\;\;-U\\

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

\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 < -1.017703287912558e-220 or 3.5282736756142025e-174 < J

    1. Initial program 11.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. Simplified11.7

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

    if -1.017703287912558e-220 < J < 3.5282736756142025e-174

    1. Initial program 38.4

      \[\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. Simplified38.4

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

      \[\leadsto \color{blue}{-1 \cdot U}\]
    4. Simplified34.9

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;J \le -1.017703287912558 \cdot 10^{-220}:\\ \;\;\;\;\left(\cos \left(\frac{K}{2}\right) \cdot J\right) \cdot \left(-2 \cdot \sqrt{1 + \frac{U}{2 \cdot \left(\cos \left(\frac{K}{2}\right) \cdot J\right)} \cdot \frac{U}{2 \cdot \left(\cos \left(\frac{K}{2}\right) \cdot J\right)}}\right)\\ \mathbf{elif}\;J \le 3.5282736756142025 \cdot 10^{-174}:\\ \;\;\;\;-U\\ \mathbf{else}:\\ \;\;\;\;\left(\cos \left(\frac{K}{2}\right) \cdot J\right) \cdot \left(-2 \cdot \sqrt{1 + \frac{U}{2 \cdot \left(\cos \left(\frac{K}{2}\right) \cdot J\right)} \cdot \frac{U}{2 \cdot \left(\cos \left(\frac{K}{2}\right) \cdot J\right)}}\right)\\ \end{array}\]

Reproduce

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