0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\begin{array}{l}
\mathbf{if}\;re \le -1.7109531485520302 \cdot 10^{+90}:\\
\;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\
\mathbf{elif}\;re \le -5.7290891404837934 \cdot 10^{-198}:\\
\;\;\;\;\sqrt{2.0 \cdot \left({\left(re \cdot re + im \cdot im\right)}^{\frac{1}{2}} - re\right)} \cdot 0.5\\
\mathbf{elif}\;re \le -4.685030330992167 \cdot 10^{-268}:\\
\;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(im - re\right)}\\
\mathbf{elif}\;re \le 5.5326837857645464 \cdot 10^{+103}:\\
\;\;\;\;\left(\frac{\sqrt{2.0}}{\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}} \cdot \frac{\left|im\right|}{\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\right) \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \frac{\sqrt{2.0 \cdot \left(im \cdot im\right)}}{\sqrt{re + re}}\\
\end{array}double f(double re, double im) {
double r776751 = 0.5;
double r776752 = 2.0;
double r776753 = re;
double r776754 = r776753 * r776753;
double r776755 = im;
double r776756 = r776755 * r776755;
double r776757 = r776754 + r776756;
double r776758 = sqrt(r776757);
double r776759 = r776758 - r776753;
double r776760 = r776752 * r776759;
double r776761 = sqrt(r776760);
double r776762 = r776751 * r776761;
return r776762;
}
double f(double re, double im) {
double r776763 = re;
double r776764 = -1.7109531485520302e+90;
bool r776765 = r776763 <= r776764;
double r776766 = -2.0;
double r776767 = r776766 * r776763;
double r776768 = 2.0;
double r776769 = r776767 * r776768;
double r776770 = sqrt(r776769);
double r776771 = 0.5;
double r776772 = r776770 * r776771;
double r776773 = -5.7290891404837934e-198;
bool r776774 = r776763 <= r776773;
double r776775 = r776763 * r776763;
double r776776 = im;
double r776777 = r776776 * r776776;
double r776778 = r776775 + r776777;
double r776779 = 0.5;
double r776780 = pow(r776778, r776779);
double r776781 = r776780 - r776763;
double r776782 = r776768 * r776781;
double r776783 = sqrt(r776782);
double r776784 = r776783 * r776771;
double r776785 = -4.685030330992167e-268;
bool r776786 = r776763 <= r776785;
double r776787 = r776776 - r776763;
double r776788 = r776768 * r776787;
double r776789 = sqrt(r776788);
double r776790 = r776771 * r776789;
double r776791 = 5.5326837857645464e+103;
bool r776792 = r776763 <= r776791;
double r776793 = sqrt(r776768);
double r776794 = sqrt(r776778);
double r776795 = r776794 + r776763;
double r776796 = sqrt(r776795);
double r776797 = sqrt(r776796);
double r776798 = r776793 / r776797;
double r776799 = fabs(r776776);
double r776800 = r776799 / r776797;
double r776801 = r776798 * r776800;
double r776802 = r776801 * r776771;
double r776803 = r776768 * r776777;
double r776804 = sqrt(r776803);
double r776805 = r776763 + r776763;
double r776806 = sqrt(r776805);
double r776807 = r776804 / r776806;
double r776808 = r776771 * r776807;
double r776809 = r776792 ? r776802 : r776808;
double r776810 = r776786 ? r776790 : r776809;
double r776811 = r776774 ? r776784 : r776810;
double r776812 = r776765 ? r776772 : r776811;
return r776812;
}



Bits error versus re



Bits error versus im
Results
if re < -1.7109531485520302e+90Initial program 47.7
Taylor expanded around -inf 10.1
if -1.7109531485520302e+90 < re < -5.7290891404837934e-198Initial program 17.1
rmApplied add-cube-cbrt17.4
rmApplied pow1/319.0
Applied pow1/319.6
Applied pow1/319.9
Applied pow-prod-up19.9
Applied pow-prod-up17.1
Applied sqrt-pow117.1
Simplified17.1
if -5.7290891404837934e-198 < re < -4.685030330992167e-268Initial program 27.4
Taylor expanded around 0 33.9
if -4.685030330992167e-268 < re < 5.5326837857645464e+103Initial program 37.3
rmApplied flip--37.3
Applied associate-*r/37.3
Applied sqrt-div37.4
Simplified30.0
rmApplied add-sqr-sqrt30.0
Applied sqrt-prod30.2
Applied sqrt-prod30.2
Applied times-frac30.1
Simplified21.8
if 5.5326837857645464e+103 < re Initial program 59.6
rmApplied flip--59.6
Applied associate-*r/59.6
Applied sqrt-div59.6
Simplified43.2
Taylor expanded around inf 20.7
Final simplification19.1
herbie shell --seed 2019162
(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)))))