Average Error: 38.5 → 28.0
Time: 4.8s
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 -8.1561596166685901 \cdot 10^{125}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-1 \cdot re - re\right)}\\ \mathbf{elif}\;re \le -3.80996693730795831 \cdot 10^{-103}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}} \cdot {\left(\sqrt{re \cdot re + im \cdot im}\right)}^{\frac{3}{4}} - re\right)}\\ \mathbf{elif}\;re \le 2.33673518569970664 \cdot 10^{-296}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{im \cdot im + 0}{\sqrt{re \cdot re + im \cdot im} + re}}\\ \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 -8.1561596166685901 \cdot 10^{125}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-1 \cdot re - re\right)}\\

\mathbf{elif}\;re \le -3.80996693730795831 \cdot 10^{-103}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}} \cdot {\left(\sqrt{re \cdot re + im \cdot im}\right)}^{\frac{3}{4}} - re\right)}\\

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

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

\end{array}
double f(double re, double im) {
        double r15927 = 0.5;
        double r15928 = 2.0;
        double r15929 = re;
        double r15930 = r15929 * r15929;
        double r15931 = im;
        double r15932 = r15931 * r15931;
        double r15933 = r15930 + r15932;
        double r15934 = sqrt(r15933);
        double r15935 = r15934 - r15929;
        double r15936 = r15928 * r15935;
        double r15937 = sqrt(r15936);
        double r15938 = r15927 * r15937;
        return r15938;
}

double f(double re, double im) {
        double r15939 = re;
        double r15940 = -8.15615961666859e+125;
        bool r15941 = r15939 <= r15940;
        double r15942 = 0.5;
        double r15943 = 2.0;
        double r15944 = -1.0;
        double r15945 = r15944 * r15939;
        double r15946 = r15945 - r15939;
        double r15947 = r15943 * r15946;
        double r15948 = sqrt(r15947);
        double r15949 = r15942 * r15948;
        double r15950 = -3.8099669373079583e-103;
        bool r15951 = r15939 <= r15950;
        double r15952 = r15939 * r15939;
        double r15953 = im;
        double r15954 = r15953 * r15953;
        double r15955 = r15952 + r15954;
        double r15956 = sqrt(r15955);
        double r15957 = sqrt(r15956);
        double r15958 = sqrt(r15957);
        double r15959 = 0.75;
        double r15960 = pow(r15956, r15959);
        double r15961 = r15958 * r15960;
        double r15962 = r15961 - r15939;
        double r15963 = r15943 * r15962;
        double r15964 = sqrt(r15963);
        double r15965 = r15942 * r15964;
        double r15966 = 2.3367351856997066e-296;
        bool r15967 = r15939 <= r15966;
        double r15968 = r15953 - r15939;
        double r15969 = r15943 * r15968;
        double r15970 = sqrt(r15969);
        double r15971 = r15942 * r15970;
        double r15972 = 0.0;
        double r15973 = r15954 + r15972;
        double r15974 = r15956 + r15939;
        double r15975 = r15973 / r15974;
        double r15976 = r15943 * r15975;
        double r15977 = sqrt(r15976);
        double r15978 = r15942 * r15977;
        double r15979 = r15967 ? r15971 : r15978;
        double r15980 = r15951 ? r15965 : r15979;
        double r15981 = r15941 ? r15949 : r15980;
        return r15981;
}

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 < -8.15615961666859e+125

    1. Initial program 55.6

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

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

    if -8.15615961666859e+125 < re < -3.8099669373079583e-103

    1. Initial program 16.4

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

      \[\leadsto 0.5 \cdot \sqrt{2 \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-prod16.5

      \[\leadsto 0.5 \cdot \sqrt{2 \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-sqrt16.5

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

      \[\leadsto 0.5 \cdot \sqrt{2 \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)}\]
    8. Applied sqrt-prod16.5

      \[\leadsto 0.5 \cdot \sqrt{2 \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)}\]
    9. Applied associate-*l*16.5

      \[\leadsto 0.5 \cdot \sqrt{2 \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)}\]
    10. Simplified16.6

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}} \cdot \color{blue}{{\left(\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}}\right)}^{3}} - re\right)}\]
    11. Using strategy rm
    12. Applied pow1/216.6

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}} \cdot {\color{blue}{\left({\left(\sqrt{re \cdot re + im \cdot im}\right)}^{\left(\frac{\frac{1}{2}}{2}\right)}\right)}}^{3} - re\right)}\]
    14. Applied pow-pow16.5

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

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

    if -3.8099669373079583e-103 < re < 2.3367351856997066e-296

    1. Initial program 26.8

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

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

    if 2.3367351856997066e-296 < re

    1. Initial program 45.9

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

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{re \cdot re + im \cdot im} - re} \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}}}\right)}\]
    6. Applied sqrt-div45.9

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\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 \frac{\sqrt{\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)}\]
    8. Applied sqrt-div45.9

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\frac{\sqrt{\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}}\]
    10. Simplified35.7

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -8.1561596166685901 \cdot 10^{125}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-1 \cdot re - re\right)}\\ \mathbf{elif}\;re \le -3.80996693730795831 \cdot 10^{-103}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}} \cdot {\left(\sqrt{re \cdot re + im \cdot im}\right)}^{\frac{3}{4}} - re\right)}\\ \mathbf{elif}\;re \le 2.33673518569970664 \cdot 10^{-296}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{im \cdot im + 0}{\sqrt{re \cdot re + im \cdot im} + re}}\\ \end{array}\]

Reproduce

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