Average Error: 38.2 → 23.6
Time: 14.3s
Precision: 64
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
\[\begin{array}{l} \mathbf{if}\;re \le -0.9300445648018506039633734872040804475546:\\ \;\;\;\;\sqrt{\left(\left(-re\right) - re\right) \cdot 2} \cdot 0.5\\ \mathbf{elif}\;re \le -1.804325587472309059445455260565415641021 \cdot 10^{-126}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \frac{\left|im\right|}{\sqrt{re + \sqrt{re \cdot re + im \cdot im}}}\right)\\ \mathbf{elif}\;re \le -8.797695074974849120444683689577616435215 \cdot 10^{-204}:\\ \;\;\;\;\sqrt{\left(\left(-re\right) - re\right) \cdot 2} \cdot 0.5\\ \mathbf{elif}\;re \le 1.04534226433947057286938009688293700363 \cdot 10^{108}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2} \cdot \left|im\right|}{\sqrt{re + \sqrt{re \cdot re + im \cdot im}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt{\left(im \cdot im\right) \cdot 2}}{\sqrt{re + re}} \cdot 0.5\\ \end{array}\]
0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}
\begin{array}{l}
\mathbf{if}\;re \le -0.9300445648018506039633734872040804475546:\\
\;\;\;\;\sqrt{\left(\left(-re\right) - re\right) \cdot 2} \cdot 0.5\\

\mathbf{elif}\;re \le -1.804325587472309059445455260565415641021 \cdot 10^{-126}:\\
\;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \frac{\left|im\right|}{\sqrt{re + \sqrt{re \cdot re + im \cdot im}}}\right)\\

\mathbf{elif}\;re \le -8.797695074974849120444683689577616435215 \cdot 10^{-204}:\\
\;\;\;\;\sqrt{\left(\left(-re\right) - re\right) \cdot 2} \cdot 0.5\\

\mathbf{elif}\;re \le 1.04534226433947057286938009688293700363 \cdot 10^{108}:\\
\;\;\;\;0.5 \cdot \frac{\sqrt{2} \cdot \left|im\right|}{\sqrt{re + \sqrt{re \cdot re + im \cdot im}}}\\

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

\end{array}
double f(double re, double im) {
        double r28860 = 0.5;
        double r28861 = 2.0;
        double r28862 = re;
        double r28863 = r28862 * r28862;
        double r28864 = im;
        double r28865 = r28864 * r28864;
        double r28866 = r28863 + r28865;
        double r28867 = sqrt(r28866);
        double r28868 = r28867 - r28862;
        double r28869 = r28861 * r28868;
        double r28870 = sqrt(r28869);
        double r28871 = r28860 * r28870;
        return r28871;
}

double f(double re, double im) {
        double r28872 = re;
        double r28873 = -0.9300445648018506;
        bool r28874 = r28872 <= r28873;
        double r28875 = -r28872;
        double r28876 = r28875 - r28872;
        double r28877 = 2.0;
        double r28878 = r28876 * r28877;
        double r28879 = sqrt(r28878);
        double r28880 = 0.5;
        double r28881 = r28879 * r28880;
        double r28882 = -1.804325587472309e-126;
        bool r28883 = r28872 <= r28882;
        double r28884 = sqrt(r28877);
        double r28885 = im;
        double r28886 = fabs(r28885);
        double r28887 = r28872 * r28872;
        double r28888 = r28885 * r28885;
        double r28889 = r28887 + r28888;
        double r28890 = sqrt(r28889);
        double r28891 = r28872 + r28890;
        double r28892 = sqrt(r28891);
        double r28893 = r28886 / r28892;
        double r28894 = r28884 * r28893;
        double r28895 = r28880 * r28894;
        double r28896 = -8.797695074974849e-204;
        bool r28897 = r28872 <= r28896;
        double r28898 = 1.0453422643394706e+108;
        bool r28899 = r28872 <= r28898;
        double r28900 = r28884 * r28886;
        double r28901 = r28900 / r28892;
        double r28902 = r28880 * r28901;
        double r28903 = r28888 * r28877;
        double r28904 = sqrt(r28903);
        double r28905 = r28872 + r28872;
        double r28906 = sqrt(r28905);
        double r28907 = r28904 / r28906;
        double r28908 = r28907 * r28880;
        double r28909 = r28899 ? r28902 : r28908;
        double r28910 = r28897 ? r28881 : r28909;
        double r28911 = r28883 ? r28895 : r28910;
        double r28912 = r28874 ? r28881 : r28911;
        return r28912;
}

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 < -0.9300445648018506 or -1.804325587472309e-126 < re < -8.797695074974849e-204

    1. Initial program 37.3

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Simplified37.3

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

      \[\leadsto 0.5 \cdot \sqrt{\left(\color{blue}{-1 \cdot re} - re\right) \cdot 2}\]
    4. Simplified21.8

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

    if -0.9300445648018506 < re < -1.804325587472309e-126

    1. Initial program 14.7

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Simplified14.7

      \[\leadsto \color{blue}{0.5 \cdot \sqrt{\left(\sqrt{re \cdot re + im \cdot im} - re\right) \cdot 2}}\]
    3. Using strategy rm
    4. Applied flip--38.8

      \[\leadsto 0.5 \cdot \sqrt{\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}} \cdot 2}\]
    5. Applied associate-*l/38.8

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

      \[\leadsto 0.5 \cdot \color{blue}{\frac{\sqrt{\left(\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re\right) \cdot 2}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    7. Simplified38.9

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2 \cdot \left(im \cdot im + 0\right)}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    8. Simplified38.9

      \[\leadsto 0.5 \cdot \frac{\sqrt{2 \cdot \left(im \cdot im + 0\right)}}{\color{blue}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}}\]
    9. Using strategy rm
    10. Applied *-un-lft-identity38.9

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

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

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2} \cdot \sqrt{im \cdot im + 0}}}{\sqrt{1} \cdot \sqrt{\sqrt{im \cdot im + re \cdot re} + re}}\]
    13. Applied times-frac39.0

      \[\leadsto 0.5 \cdot \color{blue}{\left(\frac{\sqrt{2}}{\sqrt{1}} \cdot \frac{\sqrt{im \cdot im + 0}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}\right)}\]
    14. Simplified39.0

      \[\leadsto 0.5 \cdot \left(\color{blue}{\sqrt{2}} \cdot \frac{\sqrt{im \cdot im + 0}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}\right)\]
    15. Simplified38.6

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

    if -8.797695074974849e-204 < re < 1.0453422643394706e+108

    1. Initial program 35.7

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Simplified35.7

      \[\leadsto \color{blue}{0.5 \cdot \sqrt{\left(\sqrt{re \cdot re + im \cdot im} - re\right) \cdot 2}}\]
    3. Using strategy rm
    4. Applied flip--35.9

      \[\leadsto 0.5 \cdot \sqrt{\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}} \cdot 2}\]
    5. Applied associate-*l/35.9

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

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

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2 \cdot \left(im \cdot im + 0\right)}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    8. Simplified29.5

      \[\leadsto 0.5 \cdot \frac{\sqrt{2 \cdot \left(im \cdot im + 0\right)}}{\color{blue}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}}\]
    9. Using strategy rm
    10. Applied sqrt-prod29.6

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2} \cdot \sqrt{im \cdot im + 0}}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}\]
    11. Simplified21.7

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

    if 1.0453422643394706e+108 < re

    1. Initial program 61.8

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Simplified61.8

      \[\leadsto \color{blue}{0.5 \cdot \sqrt{\left(\sqrt{re \cdot re + im \cdot im} - re\right) \cdot 2}}\]
    3. Using strategy rm
    4. Applied flip--61.8

      \[\leadsto 0.5 \cdot \sqrt{\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}} \cdot 2}\]
    5. Applied associate-*l/61.8

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{\left(\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re\right) \cdot 2}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    6. Applied sqrt-div61.8

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

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2 \cdot \left(im \cdot im + 0\right)}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    8. Simplified44.1

      \[\leadsto 0.5 \cdot \frac{\sqrt{2 \cdot \left(im \cdot im + 0\right)}}{\color{blue}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}}\]
    9. Taylor expanded around 0 21.8

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -0.9300445648018506039633734872040804475546:\\ \;\;\;\;\sqrt{\left(\left(-re\right) - re\right) \cdot 2} \cdot 0.5\\ \mathbf{elif}\;re \le -1.804325587472309059445455260565415641021 \cdot 10^{-126}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \frac{\left|im\right|}{\sqrt{re + \sqrt{re \cdot re + im \cdot im}}}\right)\\ \mathbf{elif}\;re \le -8.797695074974849120444683689577616435215 \cdot 10^{-204}:\\ \;\;\;\;\sqrt{\left(\left(-re\right) - re\right) \cdot 2} \cdot 0.5\\ \mathbf{elif}\;re \le 1.04534226433947057286938009688293700363 \cdot 10^{108}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2} \cdot \left|im\right|}{\sqrt{re + \sqrt{re \cdot re + im \cdot im}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt{\left(im \cdot im\right) \cdot 2}}{\sqrt{re + re}} \cdot 0.5\\ \end{array}\]

Reproduce

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