Average Error: 38.0 → 22.6
Time: 4.1s
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 -1.505752205836537605611230467447200313868 \cdot 10^{136}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;re \le -8.861544571423392198916971714012583524493 \cdot 10^{-181}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\\ \mathbf{elif}\;re \le -2.39328150106022774012312352354269800244 \cdot 10^{-282}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;re \le 3.315327059634812766711138741800635265487 \cdot 10^{-219}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{im}{\frac{re + im}{im}}}\\ \mathbf{elif}\;re \le 5.30197545773890109445152581959315448388 \cdot 10^{144}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot {im}^{2}}}{\sqrt{re + \sqrt{re \cdot re + im \cdot im}}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{im}{\frac{2 \cdot re}{im}}}\\ \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 -1.505752205836537605611230467447200313868 \cdot 10^{136}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\

\mathbf{elif}\;re \le -8.861544571423392198916971714012583524493 \cdot 10^{-181}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\\

\mathbf{elif}\;re \le -2.39328150106022774012312352354269800244 \cdot 10^{-282}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\

\mathbf{elif}\;re \le 3.315327059634812766711138741800635265487 \cdot 10^{-219}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{im}{\frac{re + im}{im}}}\\

\mathbf{elif}\;re \le 5.30197545773890109445152581959315448388 \cdot 10^{144}:\\
\;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot {im}^{2}}}{\sqrt{re + \sqrt{re \cdot re + im \cdot im}}}\\

\mathbf{else}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{im}{\frac{2 \cdot re}{im}}}\\

\end{array}
double f(double re, double im) {
        double r18047 = 0.5;
        double r18048 = 2.0;
        double r18049 = re;
        double r18050 = r18049 * r18049;
        double r18051 = im;
        double r18052 = r18051 * r18051;
        double r18053 = r18050 + r18052;
        double r18054 = sqrt(r18053);
        double r18055 = r18054 - r18049;
        double r18056 = r18048 * r18055;
        double r18057 = sqrt(r18056);
        double r18058 = r18047 * r18057;
        return r18058;
}

double f(double re, double im) {
        double r18059 = re;
        double r18060 = -1.5057522058365376e+136;
        bool r18061 = r18059 <= r18060;
        double r18062 = 0.5;
        double r18063 = 2.0;
        double r18064 = -2.0;
        double r18065 = r18064 * r18059;
        double r18066 = r18063 * r18065;
        double r18067 = sqrt(r18066);
        double r18068 = r18062 * r18067;
        double r18069 = -8.861544571423392e-181;
        bool r18070 = r18059 <= r18069;
        double r18071 = r18059 * r18059;
        double r18072 = im;
        double r18073 = r18072 * r18072;
        double r18074 = r18071 + r18073;
        double r18075 = sqrt(r18074);
        double r18076 = r18075 - r18059;
        double r18077 = r18063 * r18076;
        double r18078 = sqrt(r18077);
        double r18079 = r18062 * r18078;
        double r18080 = -2.3932815010602277e-282;
        bool r18081 = r18059 <= r18080;
        double r18082 = r18059 + r18072;
        double r18083 = -r18082;
        double r18084 = r18063 * r18083;
        double r18085 = sqrt(r18084);
        double r18086 = r18062 * r18085;
        double r18087 = 3.315327059634813e-219;
        bool r18088 = r18059 <= r18087;
        double r18089 = r18082 / r18072;
        double r18090 = r18072 / r18089;
        double r18091 = r18063 * r18090;
        double r18092 = sqrt(r18091);
        double r18093 = r18062 * r18092;
        double r18094 = 5.301975457738901e+144;
        bool r18095 = r18059 <= r18094;
        double r18096 = 2.0;
        double r18097 = pow(r18072, r18096);
        double r18098 = r18063 * r18097;
        double r18099 = sqrt(r18098);
        double r18100 = r18059 + r18075;
        double r18101 = sqrt(r18100);
        double r18102 = r18099 / r18101;
        double r18103 = r18062 * r18102;
        double r18104 = r18096 * r18059;
        double r18105 = r18104 / r18072;
        double r18106 = r18072 / r18105;
        double r18107 = r18063 * r18106;
        double r18108 = sqrt(r18107);
        double r18109 = r18062 * r18108;
        double r18110 = r18095 ? r18103 : r18109;
        double r18111 = r18088 ? r18093 : r18110;
        double r18112 = r18081 ? r18086 : r18111;
        double r18113 = r18070 ? r18079 : r18112;
        double r18114 = r18061 ? r18068 : r18113;
        return r18114;
}

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 6 regimes
  2. if re < -1.5057522058365376e+136

    1. Initial program 58.9

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

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

    if -1.5057522058365376e+136 < re < -8.861544571423392e-181

    1. Initial program 16.1

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

    if -8.861544571423392e-181 < re < -2.3932815010602277e-282

    1. Initial program 27.3

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Using strategy rm
    3. Applied add-exp-log29.4

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}} - re\right)}\]
    4. Using strategy rm
    5. Applied flip--30.8

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{{im}^{2}}}{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)} + re}}\]
    7. Simplified28.8

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{{im}^{2}}{\color{blue}{re + \sqrt{re \cdot re + im \cdot im}}}}\]
    8. Taylor expanded around -inf 31.8

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

    if -2.3932815010602277e-282 < re < 3.315327059634813e-219

    1. Initial program 30.5

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Using strategy rm
    3. Applied add-exp-log32.5

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}} - re\right)}\]
    4. Using strategy rm
    5. Applied flip--32.3

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\frac{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)} \cdot e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)} - re \cdot re}{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)} + re}}}\]
    6. Simplified32.3

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{{im}^{2}}}{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)} + re}}\]
    7. Simplified30.3

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{{im}^{2}}{\color{blue}{re + \sqrt{re \cdot re + im \cdot im}}}}\]
    8. Using strategy rm
    9. Applied unpow230.3

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{im \cdot im}}{re + \sqrt{re \cdot re + im \cdot im}}}\]
    10. Applied associate-/l*29.3

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\frac{im}{\frac{re + \sqrt{re \cdot re + im \cdot im}}{im}}}}\]
    11. Taylor expanded around 0 32.2

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

    if 3.315327059634813e-219 < re < 5.301975457738901e+144

    1. Initial program 41.5

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Using strategy rm
    3. Applied add-exp-log44.5

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}} - re\right)}\]
    4. Using strategy rm
    5. Applied flip--44.4

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{{im}^{2}}}{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)} + re}}\]
    7. Simplified30.2

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{{im}^{2}}{\color{blue}{re + \sqrt{re \cdot re + im \cdot im}}}}\]
    8. Using strategy rm
    9. Applied associate-*r/30.3

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{2 \cdot {im}^{2}}{re + \sqrt{re \cdot re + im \cdot im}}}}\]
    10. Applied sqrt-div29.2

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

    if 5.301975457738901e+144 < re

    1. Initial program 63.7

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Using strategy rm
    3. Applied add-exp-log63.9

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}} - re\right)}\]
    4. Using strategy rm
    5. Applied flip--63.9

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\frac{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)} \cdot e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)} - re \cdot re}{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)} + re}}}\]
    6. Simplified49.2

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{{im}^{2}}}{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)} + re}}\]
    7. Simplified49.1

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{{im}^{2}}{\color{blue}{re + \sqrt{re \cdot re + im \cdot im}}}}\]
    8. Using strategy rm
    9. Applied unpow249.1

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{im \cdot im}}{re + \sqrt{re \cdot re + im \cdot im}}}\]
    10. Applied associate-/l*48.7

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\frac{im}{\frac{re + \sqrt{re \cdot re + im \cdot im}}{im}}}}\]
    11. Taylor expanded around inf 22.6

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{im}{\frac{\color{blue}{2 \cdot re}}{im}}}\]
  3. Recombined 6 regimes into one program.
  4. Final simplification22.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -1.505752205836537605611230467447200313868 \cdot 10^{136}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;re \le -8.861544571423392198916971714012583524493 \cdot 10^{-181}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\\ \mathbf{elif}\;re \le -2.39328150106022774012312352354269800244 \cdot 10^{-282}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;re \le 3.315327059634812766711138741800635265487 \cdot 10^{-219}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{im}{\frac{re + im}{im}}}\\ \mathbf{elif}\;re \le 5.30197545773890109445152581959315448388 \cdot 10^{144}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot {im}^{2}}}{\sqrt{re + \sqrt{re \cdot re + im \cdot im}}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{im}{\frac{2 \cdot re}{im}}}\\ \end{array}\]

Reproduce

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