Average Error: 37.2 → 19.1
Time: 15.8s
Precision: 64
\[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
\[\begin{array}{l} \mathbf{if}\;re \le -2.5847343597756595 \cdot 10^{+152}:\\ \;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\ \mathbf{elif}\;re \le 3.370030719226152 \cdot 10^{-307}:\\ \;\;\;\;\sqrt{2.0 \cdot \left(\sqrt{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt{\sqrt{im \cdot im + re \cdot re}} - re\right)} \cdot 0.5\\ \mathbf{elif}\;re \le 3.221654116729901 \cdot 10^{+106}:\\ \;\;\;\;\left(\left|im\right| \cdot \frac{\sqrt{2.0}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}\right) \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt{\left(im \cdot im\right) \cdot 2.0}}{\sqrt{re + re}} \cdot 0.5\\ \end{array}\]
0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}
\begin{array}{l}
\mathbf{if}\;re \le -2.5847343597756595 \cdot 10^{+152}:\\
\;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\

\mathbf{elif}\;re \le 3.370030719226152 \cdot 10^{-307}:\\
\;\;\;\;\sqrt{2.0 \cdot \left(\sqrt{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt{\sqrt{im \cdot im + re \cdot re}} - re\right)} \cdot 0.5\\

\mathbf{elif}\;re \le 3.221654116729901 \cdot 10^{+106}:\\
\;\;\;\;\left(\left|im\right| \cdot \frac{\sqrt{2.0}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}\right) \cdot 0.5\\

\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{\left(im \cdot im\right) \cdot 2.0}}{\sqrt{re + re}} \cdot 0.5\\

\end{array}
double f(double re, double im) {
        double r983402 = 0.5;
        double r983403 = 2.0;
        double r983404 = re;
        double r983405 = r983404 * r983404;
        double r983406 = im;
        double r983407 = r983406 * r983406;
        double r983408 = r983405 + r983407;
        double r983409 = sqrt(r983408);
        double r983410 = r983409 - r983404;
        double r983411 = r983403 * r983410;
        double r983412 = sqrt(r983411);
        double r983413 = r983402 * r983412;
        return r983413;
}

double f(double re, double im) {
        double r983414 = re;
        double r983415 = -2.5847343597756595e+152;
        bool r983416 = r983414 <= r983415;
        double r983417 = -2.0;
        double r983418 = r983417 * r983414;
        double r983419 = 2.0;
        double r983420 = r983418 * r983419;
        double r983421 = sqrt(r983420);
        double r983422 = 0.5;
        double r983423 = r983421 * r983422;
        double r983424 = 3.370030719226152e-307;
        bool r983425 = r983414 <= r983424;
        double r983426 = im;
        double r983427 = r983426 * r983426;
        double r983428 = r983414 * r983414;
        double r983429 = r983427 + r983428;
        double r983430 = sqrt(r983429);
        double r983431 = sqrt(r983430);
        double r983432 = r983431 * r983431;
        double r983433 = r983432 - r983414;
        double r983434 = r983419 * r983433;
        double r983435 = sqrt(r983434);
        double r983436 = r983435 * r983422;
        double r983437 = 3.221654116729901e+106;
        bool r983438 = r983414 <= r983437;
        double r983439 = fabs(r983426);
        double r983440 = sqrt(r983419);
        double r983441 = r983430 + r983414;
        double r983442 = sqrt(r983441);
        double r983443 = r983440 / r983442;
        double r983444 = r983439 * r983443;
        double r983445 = r983444 * r983422;
        double r983446 = r983427 * r983419;
        double r983447 = sqrt(r983446);
        double r983448 = r983414 + r983414;
        double r983449 = sqrt(r983448);
        double r983450 = r983447 / r983449;
        double r983451 = r983450 * r983422;
        double r983452 = r983438 ? r983445 : r983451;
        double r983453 = r983425 ? r983436 : r983452;
        double r983454 = r983416 ? r983423 : r983453;
        return r983454;
}

Error

Bits error versus re

Bits error versus im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 4 regimes
  2. if re < -2.5847343597756595e+152

    1. Initial program 60.7

      \[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Taylor expanded around -inf 8.8

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \color{blue}{\left(-2 \cdot re\right)}}\]

    if -2.5847343597756595e+152 < re < 3.370030719226152e-307

    1. Initial program 20.1

      \[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt20.1

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{\color{blue}{\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im}}} - re\right)}\]
    4. Applied sqrt-prod20.1

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\color{blue}{\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}}} - re\right)}\]

    if 3.370030719226152e-307 < re < 3.221654116729901e+106

    1. Initial program 36.5

      \[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Using strategy rm
    3. Applied flip--36.4

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \color{blue}{\frac{\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    4. Applied associate-*r/36.5

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re\right)}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    5. Applied sqrt-div36.6

      \[\leadsto 0.5 \cdot \color{blue}{\frac{\sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re\right)}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    6. Simplified28.5

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{\left(im \cdot im + 0\right) \cdot 2.0}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    7. Using strategy rm
    8. Applied *-un-lft-identity28.5

      \[\leadsto 0.5 \cdot \frac{\sqrt{\left(im \cdot im + 0\right) \cdot 2.0}}{\sqrt{\color{blue}{1 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}}}\]
    9. Applied sqrt-prod28.5

      \[\leadsto 0.5 \cdot \frac{\sqrt{\left(im \cdot im + 0\right) \cdot 2.0}}{\color{blue}{\sqrt{1} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    10. Applied sqrt-prod28.6

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{im \cdot im + 0} \cdot \sqrt{2.0}}}{\sqrt{1} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    11. Applied times-frac28.6

      \[\leadsto 0.5 \cdot \color{blue}{\left(\frac{\sqrt{im \cdot im + 0}}{\sqrt{1}} \cdot \frac{\sqrt{2.0}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)}\]
    12. Simplified20.0

      \[\leadsto 0.5 \cdot \left(\color{blue}{\left|im\right|} \cdot \frac{\sqrt{2.0}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)\]

    if 3.221654116729901e+106 < re

    1. Initial program 60.2

      \[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Using strategy rm
    3. Applied flip--60.2

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \color{blue}{\frac{\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    4. Applied associate-*r/60.2

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re\right)}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    5. Applied sqrt-div60.2

      \[\leadsto 0.5 \cdot \color{blue}{\frac{\sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re\right)}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    6. Simplified44.1

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{\left(im \cdot im + 0\right) \cdot 2.0}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    7. Taylor expanded around inf 22.8

      \[\leadsto 0.5 \cdot \frac{\sqrt{\left(im \cdot im + 0\right) \cdot 2.0}}{\sqrt{\color{blue}{re} + re}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification19.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -2.5847343597756595 \cdot 10^{+152}:\\ \;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\ \mathbf{elif}\;re \le 3.370030719226152 \cdot 10^{-307}:\\ \;\;\;\;\sqrt{2.0 \cdot \left(\sqrt{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt{\sqrt{im \cdot im + re \cdot re}} - re\right)} \cdot 0.5\\ \mathbf{elif}\;re \le 3.221654116729901 \cdot 10^{+106}:\\ \;\;\;\;\left(\left|im\right| \cdot \frac{\sqrt{2.0}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}\right) \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt{\left(im \cdot im\right) \cdot 2.0}}{\sqrt{re + re}} \cdot 0.5\\ \end{array}\]

Reproduce

herbie shell --seed 2019165 
(FPCore (re im)
  :name "math.sqrt on complex, imaginary part, im greater than 0 branch"
  (* 0.5 (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re)))))