Average Error: 37.6 → 19.1
Time: 17.7s
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.7109531485520302 \cdot 10^{+90}:\\ \;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\ \mathbf{elif}\;re \le -5.7290891404837934 \cdot 10^{-198}:\\ \;\;\;\;\sqrt{2.0 \cdot \left({\left(re \cdot re + im \cdot im\right)}^{\frac{1}{2}} - re\right)} \cdot 0.5\\ \mathbf{elif}\;re \le -4.685030330992167 \cdot 10^{-268}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(im - re\right)}\\ \mathbf{elif}\;re \le 5.5326837857645464 \cdot 10^{+103}:\\ \;\;\;\;\left(\frac{\sqrt{2.0}}{\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}} \cdot \frac{\left|im\right|}{\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\right) \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2.0 \cdot \left(im \cdot im\right)}}{\sqrt{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.7109531485520302 \cdot 10^{+90}:\\
\;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\

\mathbf{elif}\;re \le -5.7290891404837934 \cdot 10^{-198}:\\
\;\;\;\;\sqrt{2.0 \cdot \left({\left(re \cdot re + im \cdot im\right)}^{\frac{1}{2}} - re\right)} \cdot 0.5\\

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

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

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

\end{array}
double f(double re, double im) {
        double r776751 = 0.5;
        double r776752 = 2.0;
        double r776753 = re;
        double r776754 = r776753 * r776753;
        double r776755 = im;
        double r776756 = r776755 * r776755;
        double r776757 = r776754 + r776756;
        double r776758 = sqrt(r776757);
        double r776759 = r776758 - r776753;
        double r776760 = r776752 * r776759;
        double r776761 = sqrt(r776760);
        double r776762 = r776751 * r776761;
        return r776762;
}

double f(double re, double im) {
        double r776763 = re;
        double r776764 = -1.7109531485520302e+90;
        bool r776765 = r776763 <= r776764;
        double r776766 = -2.0;
        double r776767 = r776766 * r776763;
        double r776768 = 2.0;
        double r776769 = r776767 * r776768;
        double r776770 = sqrt(r776769);
        double r776771 = 0.5;
        double r776772 = r776770 * r776771;
        double r776773 = -5.7290891404837934e-198;
        bool r776774 = r776763 <= r776773;
        double r776775 = r776763 * r776763;
        double r776776 = im;
        double r776777 = r776776 * r776776;
        double r776778 = r776775 + r776777;
        double r776779 = 0.5;
        double r776780 = pow(r776778, r776779);
        double r776781 = r776780 - r776763;
        double r776782 = r776768 * r776781;
        double r776783 = sqrt(r776782);
        double r776784 = r776783 * r776771;
        double r776785 = -4.685030330992167e-268;
        bool r776786 = r776763 <= r776785;
        double r776787 = r776776 - r776763;
        double r776788 = r776768 * r776787;
        double r776789 = sqrt(r776788);
        double r776790 = r776771 * r776789;
        double r776791 = 5.5326837857645464e+103;
        bool r776792 = r776763 <= r776791;
        double r776793 = sqrt(r776768);
        double r776794 = sqrt(r776778);
        double r776795 = r776794 + r776763;
        double r776796 = sqrt(r776795);
        double r776797 = sqrt(r776796);
        double r776798 = r776793 / r776797;
        double r776799 = fabs(r776776);
        double r776800 = r776799 / r776797;
        double r776801 = r776798 * r776800;
        double r776802 = r776801 * r776771;
        double r776803 = r776768 * r776777;
        double r776804 = sqrt(r776803);
        double r776805 = r776763 + r776763;
        double r776806 = sqrt(r776805);
        double r776807 = r776804 / r776806;
        double r776808 = r776771 * r776807;
        double r776809 = r776792 ? r776802 : r776808;
        double r776810 = r776786 ? r776790 : r776809;
        double r776811 = r776774 ? r776784 : r776810;
        double r776812 = r776765 ? r776772 : r776811;
        return r776812;
}

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 5 regimes
  2. if re < -1.7109531485520302e+90

    1. Initial program 47.7

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

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

    if -1.7109531485520302e+90 < re < -5.7290891404837934e-198

    1. Initial program 17.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-cube-cbrt17.4

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{\color{blue}{\left(\sqrt[3]{re \cdot re + im \cdot im} \cdot \sqrt[3]{re \cdot re + im \cdot im}\right) \cdot \sqrt[3]{re \cdot re + im \cdot im}}} - re\right)}\]
    4. Using strategy rm
    5. Applied pow1/319.0

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{\left(\sqrt[3]{re \cdot re + im \cdot im} \cdot \sqrt[3]{re \cdot re + im \cdot im}\right) \cdot \color{blue}{{\left(re \cdot re + im \cdot im\right)}^{\frac{1}{3}}}} - re\right)}\]
    6. Applied pow1/319.6

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{\left(\sqrt[3]{re \cdot re + im \cdot im} \cdot \color{blue}{{\left(re \cdot re + im \cdot im\right)}^{\frac{1}{3}}}\right) \cdot {\left(re \cdot re + im \cdot im\right)}^{\frac{1}{3}}} - re\right)}\]
    7. Applied pow1/319.9

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{\left(\color{blue}{{\left(re \cdot re + im \cdot im\right)}^{\frac{1}{3}}} \cdot {\left(re \cdot re + im \cdot im\right)}^{\frac{1}{3}}\right) \cdot {\left(re \cdot re + im \cdot im\right)}^{\frac{1}{3}}} - re\right)}\]
    8. Applied pow-prod-up19.9

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{\color{blue}{{\left(re \cdot re + im \cdot im\right)}^{\left(\frac{1}{3} + \frac{1}{3}\right)}} \cdot {\left(re \cdot re + im \cdot im\right)}^{\frac{1}{3}}} - re\right)}\]
    9. Applied pow-prod-up17.1

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\color{blue}{{\left(re \cdot re + im \cdot im\right)}^{\left(\frac{\left(\frac{1}{3} + \frac{1}{3}\right) + \frac{1}{3}}{2}\right)}} - re\right)}\]
    11. Simplified17.1

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

    if -5.7290891404837934e-198 < re < -4.685030330992167e-268

    1. Initial program 27.4

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

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

    if -4.685030330992167e-268 < re < 5.5326837857645464e+103

    1. Initial program 37.3

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

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

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

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

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2.0 \cdot \left(im \cdot im + 0\right)}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    7. Using strategy rm
    8. Applied add-sqr-sqrt30.0

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

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

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

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

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

    if 5.5326837857645464e+103 < re

    1. Initial program 59.6

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -1.7109531485520302 \cdot 10^{+90}:\\ \;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\ \mathbf{elif}\;re \le -5.7290891404837934 \cdot 10^{-198}:\\ \;\;\;\;\sqrt{2.0 \cdot \left({\left(re \cdot re + im \cdot im\right)}^{\frac{1}{2}} - re\right)} \cdot 0.5\\ \mathbf{elif}\;re \le -4.685030330992167 \cdot 10^{-268}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(im - re\right)}\\ \mathbf{elif}\;re \le 5.5326837857645464 \cdot 10^{+103}:\\ \;\;\;\;\left(\frac{\sqrt{2.0}}{\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}} \cdot \frac{\left|im\right|}{\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\right) \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2.0 \cdot \left(im \cdot im\right)}}{\sqrt{re + re}}\\ \end{array}\]

Reproduce

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