Average Error: 38.2 → 26.2
Time: 5.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 -6.56236824367744518 \cdot 10^{105}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-1 \cdot re - re\right)}\\ \mathbf{elif}\;re \le -2.30717077831923979 \cdot 10^{-293}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}} \cdot {\left(\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}}\right)}^{3} - re\right)}\\ \mathbf{elif}\;re \le 9.5166256281778276 \cdot 10^{-220}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{im \cdot im + 0}{re + \sqrt{re \cdot re + im \cdot 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 -6.56236824367744518 \cdot 10^{105}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-1 \cdot re - re\right)}\\

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

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

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

\end{array}
double f(double re, double im) {
        double r17715 = 0.5;
        double r17716 = 2.0;
        double r17717 = re;
        double r17718 = r17717 * r17717;
        double r17719 = im;
        double r17720 = r17719 * r17719;
        double r17721 = r17718 + r17720;
        double r17722 = sqrt(r17721);
        double r17723 = r17722 - r17717;
        double r17724 = r17716 * r17723;
        double r17725 = sqrt(r17724);
        double r17726 = r17715 * r17725;
        return r17726;
}

double f(double re, double im) {
        double r17727 = re;
        double r17728 = -6.562368243677445e+105;
        bool r17729 = r17727 <= r17728;
        double r17730 = 0.5;
        double r17731 = 2.0;
        double r17732 = -1.0;
        double r17733 = r17732 * r17727;
        double r17734 = r17733 - r17727;
        double r17735 = r17731 * r17734;
        double r17736 = sqrt(r17735);
        double r17737 = r17730 * r17736;
        double r17738 = -2.3071707783192398e-293;
        bool r17739 = r17727 <= r17738;
        double r17740 = r17727 * r17727;
        double r17741 = im;
        double r17742 = r17741 * r17741;
        double r17743 = r17740 + r17742;
        double r17744 = sqrt(r17743);
        double r17745 = sqrt(r17744);
        double r17746 = sqrt(r17745);
        double r17747 = 3.0;
        double r17748 = pow(r17746, r17747);
        double r17749 = r17746 * r17748;
        double r17750 = r17749 - r17727;
        double r17751 = r17731 * r17750;
        double r17752 = sqrt(r17751);
        double r17753 = r17730 * r17752;
        double r17754 = 9.516625628177828e-220;
        bool r17755 = r17727 <= r17754;
        double r17756 = r17741 - r17727;
        double r17757 = r17731 * r17756;
        double r17758 = sqrt(r17757);
        double r17759 = r17730 * r17758;
        double r17760 = 0.0;
        double r17761 = r17742 + r17760;
        double r17762 = r17727 + r17744;
        double r17763 = r17761 / r17762;
        double r17764 = r17731 * r17763;
        double r17765 = sqrt(r17764);
        double r17766 = r17730 * r17765;
        double r17767 = r17755 ? r17759 : r17766;
        double r17768 = r17739 ? r17753 : r17767;
        double r17769 = r17729 ? r17737 : r17768;
        return r17769;
}

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 < -6.562368243677445e+105

    1. Initial program 51.3

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

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

    if -6.562368243677445e+105 < re < -2.3071707783192398e-293

    1. Initial program 19.8

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

      \[\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-prod19.9

      \[\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-sqrt19.9

      \[\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-prod19.9

      \[\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-prod19.9

      \[\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*19.9

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

      \[\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)}\]

    if -2.3071707783192398e-293 < re < 9.516625628177828e-220

    1. Initial program 31.8

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

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

    if 9.516625628177828e-220 < re

    1. Initial program 48.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-sqrt48.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-prod49.0

      \[\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 flip--48.9

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -6.56236824367744518 \cdot 10^{105}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-1 \cdot re - re\right)}\\ \mathbf{elif}\;re \le -2.30717077831923979 \cdot 10^{-293}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}} \cdot {\left(\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}}\right)}^{3} - re\right)}\\ \mathbf{elif}\;re \le 9.5166256281778276 \cdot 10^{-220}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{im \cdot im + 0}{re + \sqrt{re \cdot re + im \cdot im}}}\\ \end{array}\]

Reproduce

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