Average Error: 37.4 → 26.1
Time: 25.3s
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 -1.2183670066001296 \cdot 10^{+58}:\\ \;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\ \mathbf{elif}\;re \le 3.102221079821437 \cdot 10^{-308}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\left(\sqrt{\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}} \cdot \sqrt{\sqrt{im \cdot im + re \cdot re}}\right) \cdot \sqrt{\sqrt[3]{\sqrt{im \cdot im + re \cdot re}}} - re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{\left(im \cdot im\right) \cdot 2.0}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}\\ \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 -1.2183670066001296 \cdot 10^{+58}:\\
\;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\

\mathbf{elif}\;re \le 3.102221079821437 \cdot 10^{-308}:\\
\;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\left(\sqrt{\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}} \cdot \sqrt{\sqrt{im \cdot im + re \cdot re}}\right) \cdot \sqrt{\sqrt[3]{\sqrt{im \cdot im + re \cdot re}}} - re\right)}\\

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

\end{array}
double f(double re, double im) {
        double r820688 = 0.5;
        double r820689 = 2.0;
        double r820690 = re;
        double r820691 = r820690 * r820690;
        double r820692 = im;
        double r820693 = r820692 * r820692;
        double r820694 = r820691 + r820693;
        double r820695 = sqrt(r820694);
        double r820696 = r820695 - r820690;
        double r820697 = r820689 * r820696;
        double r820698 = sqrt(r820697);
        double r820699 = r820688 * r820698;
        return r820699;
}

double f(double re, double im) {
        double r820700 = re;
        double r820701 = -1.2183670066001296e+58;
        bool r820702 = r820700 <= r820701;
        double r820703 = -2.0;
        double r820704 = r820703 * r820700;
        double r820705 = 2.0;
        double r820706 = r820704 * r820705;
        double r820707 = sqrt(r820706);
        double r820708 = 0.5;
        double r820709 = r820707 * r820708;
        double r820710 = 3.102221079821437e-308;
        bool r820711 = r820700 <= r820710;
        double r820712 = im;
        double r820713 = r820712 * r820712;
        double r820714 = r820700 * r820700;
        double r820715 = r820713 + r820714;
        double r820716 = sqrt(r820715);
        double r820717 = cbrt(r820716);
        double r820718 = r820717 * r820717;
        double r820719 = sqrt(r820718);
        double r820720 = sqrt(r820716);
        double r820721 = r820719 * r820720;
        double r820722 = sqrt(r820717);
        double r820723 = r820721 * r820722;
        double r820724 = r820723 - r820700;
        double r820725 = r820705 * r820724;
        double r820726 = sqrt(r820725);
        double r820727 = r820708 * r820726;
        double r820728 = r820713 * r820705;
        double r820729 = sqrt(r820728);
        double r820730 = r820716 + r820700;
        double r820731 = sqrt(r820730);
        double r820732 = r820729 / r820731;
        double r820733 = r820708 * r820732;
        double r820734 = r820711 ? r820727 : r820733;
        double r820735 = r820702 ? r820709 : r820734;
        return r820735;
}

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 3 regimes
  2. if re < -1.2183670066001296e+58

    1. Initial program 43.0

      \[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-sqrt43.0

      \[\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-prod43.0

      \[\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)}\]
    5. Using strategy rm
    6. Applied add-sqr-sqrt43.0

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\color{blue}{\left(\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}} \cdot \sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}}\right)} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}} - re\right)}\]
    8. Applied associate-*l*43.0

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\color{blue}{\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}} \cdot \left(\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}}\right)} - re\right)}\]
    9. Taylor expanded around -inf 13.1

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

    if -1.2183670066001296e+58 < re < 3.102221079821437e-308

    1. Initial program 21.2

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

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

      \[\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)}\]
    5. Using strategy rm
    6. Applied add-cube-cbrt21.4

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \color{blue}{\left(\sqrt{\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}} \cdot \sqrt{\sqrt[3]{\sqrt{re \cdot re + im \cdot im}}}\right)} - re\right)}\]
    8. Applied associate-*r*21.4

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

    if 3.102221079821437e-308 < re

    1. Initial program 45.1

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

      \[\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/45.0

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

      \[\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. Simplified34.6

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -1.2183670066001296 \cdot 10^{+58}:\\ \;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\ \mathbf{elif}\;re \le 3.102221079821437 \cdot 10^{-308}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\left(\sqrt{\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}} \cdot \sqrt{\sqrt{im \cdot im + re \cdot re}}\right) \cdot \sqrt{\sqrt[3]{\sqrt{im \cdot im + re \cdot re}}} - re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{\left(im \cdot im\right) \cdot 2.0}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}\\ \end{array}\]

Reproduce

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