Average Error: 17.8 → 8.1
Time: 1.1m
Precision: 64
\[\left(\left(-2.0 \cdot J\right) \cdot \cos \left(\frac{K}{2.0}\right)\right) \cdot \sqrt{1.0 + {\left(\frac{U}{\left(2.0 \cdot J\right) \cdot \cos \left(\frac{K}{2.0}\right)}\right)}^{2.0}}\]
\[\begin{array}{l} \mathbf{if}\;J \le 3.01385590437591 \cdot 10^{-302}:\\ \;\;\;\;\mathsf{hypot}\left({\left(\frac{U}{\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot 2.0}\right)}^{\left(\frac{2.0}{2}\right)}, \sqrt{1.0}\right) \cdot \left(\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot -2.0\right)\\ \mathbf{elif}\;J \le 3.7183310343194604 \cdot 10^{-247}:\\ \;\;\;\;-2.0 \cdot \left(U \cdot \sqrt{0.25}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{hypot}\left({\left(\frac{U}{\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot 2.0}\right)}^{\left(\frac{2.0}{2}\right)}, \sqrt{1.0}\right) \cdot \left(\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot -2.0\right)\\ \end{array}\]
\left(\left(-2.0 \cdot J\right) \cdot \cos \left(\frac{K}{2.0}\right)\right) \cdot \sqrt{1.0 + {\left(\frac{U}{\left(2.0 \cdot J\right) \cdot \cos \left(\frac{K}{2.0}\right)}\right)}^{2.0}}
\begin{array}{l}
\mathbf{if}\;J \le 3.01385590437591 \cdot 10^{-302}:\\
\;\;\;\;\mathsf{hypot}\left({\left(\frac{U}{\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot 2.0}\right)}^{\left(\frac{2.0}{2}\right)}, \sqrt{1.0}\right) \cdot \left(\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot -2.0\right)\\

\mathbf{elif}\;J \le 3.7183310343194604 \cdot 10^{-247}:\\
\;\;\;\;-2.0 \cdot \left(U \cdot \sqrt{0.25}\right)\\

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

\end{array}
double f(double J, double K, double U) {
        double r5530252 = -2.0;
        double r5530253 = J;
        double r5530254 = r5530252 * r5530253;
        double r5530255 = K;
        double r5530256 = 2.0;
        double r5530257 = r5530255 / r5530256;
        double r5530258 = cos(r5530257);
        double r5530259 = r5530254 * r5530258;
        double r5530260 = 1.0;
        double r5530261 = U;
        double r5530262 = r5530256 * r5530253;
        double r5530263 = r5530262 * r5530258;
        double r5530264 = r5530261 / r5530263;
        double r5530265 = pow(r5530264, r5530256);
        double r5530266 = r5530260 + r5530265;
        double r5530267 = sqrt(r5530266);
        double r5530268 = r5530259 * r5530267;
        return r5530268;
}

double f(double J, double K, double U) {
        double r5530269 = J;
        double r5530270 = 3.01385590437591e-302;
        bool r5530271 = r5530269 <= r5530270;
        double r5530272 = U;
        double r5530273 = K;
        double r5530274 = 2.0;
        double r5530275 = r5530273 / r5530274;
        double r5530276 = cos(r5530275);
        double r5530277 = r5530276 * r5530269;
        double r5530278 = r5530277 * r5530274;
        double r5530279 = r5530272 / r5530278;
        double r5530280 = 2.0;
        double r5530281 = r5530274 / r5530280;
        double r5530282 = pow(r5530279, r5530281);
        double r5530283 = 1.0;
        double r5530284 = sqrt(r5530283);
        double r5530285 = hypot(r5530282, r5530284);
        double r5530286 = -2.0;
        double r5530287 = r5530277 * r5530286;
        double r5530288 = r5530285 * r5530287;
        double r5530289 = 3.7183310343194604e-247;
        bool r5530290 = r5530269 <= r5530289;
        double r5530291 = 0.25;
        double r5530292 = sqrt(r5530291);
        double r5530293 = r5530272 * r5530292;
        double r5530294 = r5530286 * r5530293;
        double r5530295 = r5530290 ? r5530294 : r5530288;
        double r5530296 = r5530271 ? r5530288 : r5530295;
        return r5530296;
}

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.01385590437591e-302 or 3.7183310343194604e-247 < J

    1. Initial program 16.7

      \[\left(\left(-2.0 \cdot J\right) \cdot \cos \left(\frac{K}{2.0}\right)\right) \cdot \sqrt{1.0 + {\left(\frac{U}{\left(2.0 \cdot J\right) \cdot \cos \left(\frac{K}{2.0}\right)}\right)}^{2.0}}\]
    2. Simplified16.7

      \[\leadsto \color{blue}{\sqrt{{\left(\frac{U}{\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot 2.0}\right)}^{2.0} + 1.0} \cdot \left(\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot -2.0\right)}\]
    3. Using strategy rm
    4. Applied add-sqr-sqrt16.7

      \[\leadsto \sqrt{{\left(\frac{U}{\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot 2.0}\right)}^{2.0} + \color{blue}{\sqrt{1.0} \cdot \sqrt{1.0}}} \cdot \left(\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot -2.0\right)\]
    5. Applied sqr-pow16.7

      \[\leadsto \sqrt{\color{blue}{{\left(\frac{U}{\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot 2.0}\right)}^{\left(\frac{2.0}{2}\right)} \cdot {\left(\frac{U}{\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot 2.0}\right)}^{\left(\frac{2.0}{2}\right)}} + \sqrt{1.0} \cdot \sqrt{1.0}} \cdot \left(\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot -2.0\right)\]
    6. Applied hypot-def7.1

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

    if 3.01385590437591e-302 < J < 3.7183310343194604e-247

    1. Initial program 43.5

      \[\left(\left(-2.0 \cdot J\right) \cdot \cos \left(\frac{K}{2.0}\right)\right) \cdot \sqrt{1.0 + {\left(\frac{U}{\left(2.0 \cdot J\right) \cdot \cos \left(\frac{K}{2.0}\right)}\right)}^{2.0}}\]
    2. Simplified43.5

      \[\leadsto \color{blue}{\sqrt{{\left(\frac{U}{\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot 2.0}\right)}^{2.0} + 1.0} \cdot \left(\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot -2.0\right)}\]
    3. Taylor expanded around inf 33.0

      \[\leadsto \color{blue}{-2.0 \cdot \left(\sqrt{0.25} \cdot U\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification8.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;J \le 3.01385590437591 \cdot 10^{-302}:\\ \;\;\;\;\mathsf{hypot}\left({\left(\frac{U}{\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot 2.0}\right)}^{\left(\frac{2.0}{2}\right)}, \sqrt{1.0}\right) \cdot \left(\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot -2.0\right)\\ \mathbf{elif}\;J \le 3.7183310343194604 \cdot 10^{-247}:\\ \;\;\;\;-2.0 \cdot \left(U \cdot \sqrt{0.25}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{hypot}\left({\left(\frac{U}{\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot 2.0}\right)}^{\left(\frac{2.0}{2}\right)}, \sqrt{1.0}\right) \cdot \left(\left(\cos \left(\frac{K}{2.0}\right) \cdot J\right) \cdot -2.0\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019165 +o rules:numerics
(FPCore (J K U)
  :name "Maksimov and Kolovsky, Equation (3)"
  (* (* (* -2.0 J) (cos (/ K 2.0))) (sqrt (+ 1.0 (pow (/ U (* (* 2.0 J) (cos (/ K 2.0)))) 2.0)))))