Average Error: 38.2 → 23.6
Time: 13.7s
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 r28849 = 0.5;
        double r28850 = 2.0;
        double r28851 = re;
        double r28852 = r28851 * r28851;
        double r28853 = im;
        double r28854 = r28853 * r28853;
        double r28855 = r28852 + r28854;
        double r28856 = sqrt(r28855);
        double r28857 = r28856 - r28851;
        double r28858 = r28850 * r28857;
        double r28859 = sqrt(r28858);
        double r28860 = r28849 * r28859;
        return r28860;
}

double f(double re, double im) {
        double r28861 = re;
        double r28862 = -0.9300445648018506;
        bool r28863 = r28861 <= r28862;
        double r28864 = -r28861;
        double r28865 = r28864 - r28861;
        double r28866 = 2.0;
        double r28867 = r28865 * r28866;
        double r28868 = sqrt(r28867);
        double r28869 = 0.5;
        double r28870 = r28868 * r28869;
        double r28871 = -1.804325587472309e-126;
        bool r28872 = r28861 <= r28871;
        double r28873 = sqrt(r28866);
        double r28874 = im;
        double r28875 = fabs(r28874);
        double r28876 = r28861 * r28861;
        double r28877 = r28874 * r28874;
        double r28878 = r28876 + r28877;
        double r28879 = sqrt(r28878);
        double r28880 = r28861 + r28879;
        double r28881 = sqrt(r28880);
        double r28882 = r28875 / r28881;
        double r28883 = r28873 * r28882;
        double r28884 = r28869 * r28883;
        double r28885 = -8.797695074974849e-204;
        bool r28886 = r28861 <= r28885;
        double r28887 = 1.0453422643394706e+108;
        bool r28888 = r28861 <= r28887;
        double r28889 = r28873 * r28875;
        double r28890 = r28889 / r28881;
        double r28891 = r28869 * r28890;
        double r28892 = r28877 * r28866;
        double r28893 = sqrt(r28892);
        double r28894 = r28861 + r28861;
        double r28895 = sqrt(r28894);
        double r28896 = r28893 / r28895;
        double r28897 = r28896 * r28869;
        double r28898 = r28888 ? r28891 : r28897;
        double r28899 = r28886 ? r28870 : r28898;
        double r28900 = r28872 ? r28884 : r28899;
        double r28901 = r28863 ? r28870 : r28900;
        return r28901;
}

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)))))