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.0503488391488898 \cdot 10^{+119}:\\
\;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\
\mathbf{elif}\;re \le 1.6607509068317904 \cdot 10^{+133}:\\
\;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{\sqrt[3]{im \cdot im + re \cdot re}} \cdot \left|\sqrt[3]{im \cdot im + re \cdot re}\right| - re\right)}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}double f(double re, double im) {
double r566771 = 0.5;
double r566772 = 2.0;
double r566773 = re;
double r566774 = r566773 * r566773;
double r566775 = im;
double r566776 = r566775 * r566775;
double r566777 = r566774 + r566776;
double r566778 = sqrt(r566777);
double r566779 = r566778 - r566773;
double r566780 = r566772 * r566779;
double r566781 = sqrt(r566780);
double r566782 = r566771 * r566781;
return r566782;
}
double f(double re, double im) {
double r566783 = re;
double r566784 = -1.0503488391488898e+119;
bool r566785 = r566783 <= r566784;
double r566786 = -2.0;
double r566787 = r566786 * r566783;
double r566788 = 2.0;
double r566789 = r566787 * r566788;
double r566790 = sqrt(r566789);
double r566791 = 0.5;
double r566792 = r566790 * r566791;
double r566793 = 1.6607509068317904e+133;
bool r566794 = r566783 <= r566793;
double r566795 = im;
double r566796 = r566795 * r566795;
double r566797 = r566783 * r566783;
double r566798 = r566796 + r566797;
double r566799 = cbrt(r566798);
double r566800 = sqrt(r566799);
double r566801 = fabs(r566799);
double r566802 = r566800 * r566801;
double r566803 = r566802 - r566783;
double r566804 = r566788 * r566803;
double r566805 = sqrt(r566804);
double r566806 = r566791 * r566805;
double r566807 = 0.0;
double r566808 = r566794 ? r566806 : r566807;
double r566809 = r566785 ? r566792 : r566808;
return r566809;
}



Bits error versus re



Bits error versus im
Results
if re < -1.0503488391488898e+119Initial program 52.5
Taylor expanded around -inf 9.6
if -1.0503488391488898e+119 < re < 1.6607509068317904e+133Initial program 29.5
rmApplied add-cube-cbrt30.2
Applied sqrt-prod30.1
Simplified30.1
if 1.6607509068317904e+133 < re Initial program 61.2
Taylor expanded around inf 50.9
Final simplification29.7
herbie shell --seed 2019135
(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)))))