Average Error: 17.1 → 7.8
Time: 29.9s
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.3819507464850254 \cdot 10^{-285}:\\ \;\;\;\;\left(\mathsf{hypot}\left(1, \frac{U}{\left(\cos \left(\frac{K}{2}\right) \cdot 2\right) \cdot J}\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot \left(J \cdot -2\right)\\ \mathbf{elif}\;J \le 2.7346568877506468 \cdot 10^{-278}:\\ \;\;\;\;-U\\ \mathbf{else}:\\ \;\;\;\;\left(\mathsf{hypot}\left(1, \frac{U}{\left(\cos \left(\frac{K}{2}\right) \cdot 2\right) \cdot J}\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot \left(J \cdot -2\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.3819507464850254 \cdot 10^{-285}:\\
\;\;\;\;\left(\mathsf{hypot}\left(1, \frac{U}{\left(\cos \left(\frac{K}{2}\right) \cdot 2\right) \cdot J}\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot \left(J \cdot -2\right)\\

\mathbf{elif}\;J \le 2.7346568877506468 \cdot 10^{-278}:\\
\;\;\;\;-U\\

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

\end{array}
double f(double J, double K, double U) {
        double r4641656 = -2.0;
        double r4641657 = J;
        double r4641658 = r4641656 * r4641657;
        double r4641659 = K;
        double r4641660 = 2.0;
        double r4641661 = r4641659 / r4641660;
        double r4641662 = cos(r4641661);
        double r4641663 = r4641658 * r4641662;
        double r4641664 = 1.0;
        double r4641665 = U;
        double r4641666 = r4641660 * r4641657;
        double r4641667 = r4641666 * r4641662;
        double r4641668 = r4641665 / r4641667;
        double r4641669 = pow(r4641668, r4641660);
        double r4641670 = r4641664 + r4641669;
        double r4641671 = sqrt(r4641670);
        double r4641672 = r4641663 * r4641671;
        return r4641672;
}

double f(double J, double K, double U) {
        double r4641673 = J;
        double r4641674 = -1.3819507464850254e-285;
        bool r4641675 = r4641673 <= r4641674;
        double r4641676 = 1.0;
        double r4641677 = U;
        double r4641678 = K;
        double r4641679 = 2.0;
        double r4641680 = r4641678 / r4641679;
        double r4641681 = cos(r4641680);
        double r4641682 = r4641681 * r4641679;
        double r4641683 = r4641682 * r4641673;
        double r4641684 = r4641677 / r4641683;
        double r4641685 = hypot(r4641676, r4641684);
        double r4641686 = r4641685 * r4641681;
        double r4641687 = -2.0;
        double r4641688 = r4641673 * r4641687;
        double r4641689 = r4641686 * r4641688;
        double r4641690 = 2.7346568877506468e-278;
        bool r4641691 = r4641673 <= r4641690;
        double r4641692 = -r4641677;
        double r4641693 = r4641691 ? r4641692 : r4641689;
        double r4641694 = r4641675 ? r4641689 : r4641693;
        return r4641694;
}

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.3819507464850254e-285 or 2.7346568877506468e-278 < J

    1. Initial program 16.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.8

      \[\leadsto \color{blue}{\mathsf{hypot}\left(1, \frac{U}{\left(2 \cdot \cos \left(\frac{K}{2}\right)\right) \cdot J}\right) \cdot \left(\cos \left(\frac{K}{2}\right) \cdot \left(-2 \cdot J\right)\right)}\]
    3. Using strategy rm
    4. Applied associate-*r*6.9

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

    if -1.3819507464850254e-285 < J < 2.7346568877506468e-278

    1. Initial program 43.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. Simplified30.1

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

      \[\leadsto \color{blue}{-1 \cdot U}\]
    4. Simplified30.0

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;J \le -1.3819507464850254 \cdot 10^{-285}:\\ \;\;\;\;\left(\mathsf{hypot}\left(1, \frac{U}{\left(\cos \left(\frac{K}{2}\right) \cdot 2\right) \cdot J}\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot \left(J \cdot -2\right)\\ \mathbf{elif}\;J \le 2.7346568877506468 \cdot 10^{-278}:\\ \;\;\;\;-U\\ \mathbf{else}:\\ \;\;\;\;\left(\mathsf{hypot}\left(1, \frac{U}{\left(\cos \left(\frac{K}{2}\right) \cdot 2\right) \cdot J}\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot \left(J \cdot -2\right)\\ \end{array}\]

Reproduce

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