0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\begin{array}{l}
\mathbf{if}\;re \le -5.9648958467837301 \cdot 10^{102}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\
\mathbf{elif}\;re \le -5.355088044563557 \cdot 10^{-294}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left({\left(\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}}\right)}^{3} \cdot \sqrt{\sqrt{\sqrt{re \cdot re + im \cdot 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 r15987 = 0.5;
double r15988 = 2.0;
double r15989 = re;
double r15990 = r15989 * r15989;
double r15991 = im;
double r15992 = r15991 * r15991;
double r15993 = r15990 + r15992;
double r15994 = sqrt(r15993);
double r15995 = r15994 - r15989;
double r15996 = r15988 * r15995;
double r15997 = sqrt(r15996);
double r15998 = r15987 * r15997;
return r15998;
}
double f(double re, double im) {
double r15999 = re;
double r16000 = -5.96489584678373e+102;
bool r16001 = r15999 <= r16000;
double r16002 = 0.5;
double r16003 = 2.0;
double r16004 = -2.0;
double r16005 = r16004 * r15999;
double r16006 = r16003 * r16005;
double r16007 = sqrt(r16006);
double r16008 = r16002 * r16007;
double r16009 = -5.355088044563557e-294;
bool r16010 = r15999 <= r16009;
double r16011 = r15999 * r15999;
double r16012 = im;
double r16013 = r16012 * r16012;
double r16014 = r16011 + r16013;
double r16015 = sqrt(r16014);
double r16016 = sqrt(r16015);
double r16017 = sqrt(r16016);
double r16018 = 3.0;
double r16019 = pow(r16017, r16018);
double r16020 = r16019 * r16017;
double r16021 = r16020 - r15999;
double r16022 = r16003 * r16021;
double r16023 = sqrt(r16022);
double r16024 = r16002 * r16023;
double r16025 = 0.0;
double r16026 = r16013 + r16025;
double r16027 = r15999 + r16015;
double r16028 = r16026 / r16027;
double r16029 = r16003 * r16028;
double r16030 = sqrt(r16029);
double r16031 = r16002 * r16030;
double r16032 = r16010 ? r16024 : r16031;
double r16033 = r16001 ? r16008 : r16032;
return r16033;
}



Bits error versus re



Bits error versus im
Results
if re < -5.96489584678373e+102Initial program 53.0
Taylor expanded around -inf 10.1
if -5.96489584678373e+102 < re < -5.355088044563557e-294Initial program 21.2
rmApplied add-sqr-sqrt21.2
Applied sqrt-prod21.3
rmApplied add-sqr-sqrt21.3
Applied sqrt-prod21.3
Applied sqrt-prod21.4
Applied associate-*r*21.4
Simplified21.5
if -5.355088044563557e-294 < re Initial program 45.4
rmApplied add-sqr-sqrt45.4
Applied sqrt-prod46.1
rmApplied flip--45.9
Simplified36.0
Simplified36.0
Final simplification27.2
herbie shell --seed 2020089
(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)))))