0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\begin{array}{l}
\mathbf{if}\;re \le -5.5777813673616158 \cdot 10^{127}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(-re\right) - re\right)}\\
\mathbf{elif}\;re \le -4.72909341262804752 \cdot 10^{-264}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left|\sqrt[3]{re \cdot re + im \cdot im}\right| \cdot \sqrt{\sqrt[3]{re \cdot re + im \cdot im}} - re\right)}\\
\mathbf{elif}\;re \le 1.27662858127337166 \cdot 10^{-281}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\
\mathbf{elif}\;re \le 4.0653242819631272 \cdot 10^{114}:\\
\;\;\;\;0.5 \cdot \left(\left(\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}\right) \cdot \left(\left(\sqrt[3]{\sqrt[3]{\sqrt{2}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt{2}}}\right) \cdot \left(\sqrt[3]{\sqrt[3]{\sqrt{2}}} \cdot \frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \frac{\left|im\right|}{\sqrt{re + re}}\right)\\
\end{array}double f(double re, double im) {
double r25042 = 0.5;
double r25043 = 2.0;
double r25044 = re;
double r25045 = r25044 * r25044;
double r25046 = im;
double r25047 = r25046 * r25046;
double r25048 = r25045 + r25047;
double r25049 = sqrt(r25048);
double r25050 = r25049 - r25044;
double r25051 = r25043 * r25050;
double r25052 = sqrt(r25051);
double r25053 = r25042 * r25052;
return r25053;
}
double f(double re, double im) {
double r25054 = re;
double r25055 = -5.577781367361616e+127;
bool r25056 = r25054 <= r25055;
double r25057 = 0.5;
double r25058 = 2.0;
double r25059 = -r25054;
double r25060 = r25059 - r25054;
double r25061 = r25058 * r25060;
double r25062 = sqrt(r25061);
double r25063 = r25057 * r25062;
double r25064 = -4.7290934126280475e-264;
bool r25065 = r25054 <= r25064;
double r25066 = r25054 * r25054;
double r25067 = im;
double r25068 = r25067 * r25067;
double r25069 = r25066 + r25068;
double r25070 = cbrt(r25069);
double r25071 = fabs(r25070);
double r25072 = sqrt(r25070);
double r25073 = r25071 * r25072;
double r25074 = r25073 - r25054;
double r25075 = r25058 * r25074;
double r25076 = sqrt(r25075);
double r25077 = r25057 * r25076;
double r25078 = 1.2766285812733717e-281;
bool r25079 = r25054 <= r25078;
double r25080 = r25067 - r25054;
double r25081 = r25058 * r25080;
double r25082 = sqrt(r25081);
double r25083 = r25057 * r25082;
double r25084 = 4.065324281963127e+114;
bool r25085 = r25054 <= r25084;
double r25086 = sqrt(r25058);
double r25087 = cbrt(r25086);
double r25088 = r25087 * r25087;
double r25089 = cbrt(r25087);
double r25090 = r25089 * r25089;
double r25091 = fabs(r25067);
double r25092 = sqrt(r25069);
double r25093 = r25092 + r25054;
double r25094 = sqrt(r25093);
double r25095 = r25091 / r25094;
double r25096 = r25089 * r25095;
double r25097 = r25090 * r25096;
double r25098 = r25088 * r25097;
double r25099 = r25057 * r25098;
double r25100 = r25054 + r25054;
double r25101 = sqrt(r25100);
double r25102 = r25091 / r25101;
double r25103 = r25086 * r25102;
double r25104 = r25057 * r25103;
double r25105 = r25085 ? r25099 : r25104;
double r25106 = r25079 ? r25083 : r25105;
double r25107 = r25065 ? r25077 : r25106;
double r25108 = r25056 ? r25063 : r25107;
return r25108;
}



Bits error versus re



Bits error versus im
Results
if re < -5.577781367361616e+127Initial program 56.4
Taylor expanded around -inf 9.0
Simplified9.0
if -5.577781367361616e+127 < re < -4.7290934126280475e-264Initial program 20.5
rmApplied add-cube-cbrt20.8
Applied sqrt-prod20.8
Simplified20.8
if -4.7290934126280475e-264 < re < 1.2766285812733717e-281Initial program 30.9
Taylor expanded around 0 33.5
if 1.2766285812733717e-281 < re < 4.065324281963127e+114Initial program 39.6
rmApplied flip--39.4
Applied associate-*r/39.4
Applied sqrt-div39.5
Simplified30.5
rmApplied *-un-lft-identity30.5
Applied sqrt-prod30.5
Applied sqrt-prod30.6
Applied times-frac30.6
Simplified30.6
Simplified20.5
rmApplied add-cube-cbrt20.5
Applied associate-*l*20.5
rmApplied add-cube-cbrt20.5
Applied associate-*l*20.5
if 4.065324281963127e+114 < re Initial program 62.0
rmApplied flip--62.0
Applied associate-*r/62.0
Applied sqrt-div62.0
Simplified44.6
rmApplied *-un-lft-identity44.6
Applied sqrt-prod44.6
Applied sqrt-prod44.6
Applied times-frac44.6
Simplified44.6
Simplified42.9
Taylor expanded around inf 9.0
Final simplification17.8
herbie shell --seed 2020046
(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)))))