0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\begin{array}{l}
\mathbf{if}\;re \le -1.505752205836537605611230467447200313868 \cdot 10^{136}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\
\mathbf{elif}\;re \le -8.861544571423392198916971714012583524493 \cdot 10^{-181}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\\
\mathbf{elif}\;re \le -2.39328150106022774012312352354269800244 \cdot 10^{-282}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\
\mathbf{elif}\;re \le 3.315327059634812766711138741800635265487 \cdot 10^{-219}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{im}{\frac{re + im}{im}}}\\
\mathbf{elif}\;re \le 5.30197545773890109445152581959315448388 \cdot 10^{144}:\\
\;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot {im}^{2}}}{\sqrt{re + \sqrt{re \cdot re + im \cdot im}}}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{im}{\frac{2 \cdot re}{im}}}\\
\end{array}double f(double re, double im) {
double r18047 = 0.5;
double r18048 = 2.0;
double r18049 = re;
double r18050 = r18049 * r18049;
double r18051 = im;
double r18052 = r18051 * r18051;
double r18053 = r18050 + r18052;
double r18054 = sqrt(r18053);
double r18055 = r18054 - r18049;
double r18056 = r18048 * r18055;
double r18057 = sqrt(r18056);
double r18058 = r18047 * r18057;
return r18058;
}
double f(double re, double im) {
double r18059 = re;
double r18060 = -1.5057522058365376e+136;
bool r18061 = r18059 <= r18060;
double r18062 = 0.5;
double r18063 = 2.0;
double r18064 = -2.0;
double r18065 = r18064 * r18059;
double r18066 = r18063 * r18065;
double r18067 = sqrt(r18066);
double r18068 = r18062 * r18067;
double r18069 = -8.861544571423392e-181;
bool r18070 = r18059 <= r18069;
double r18071 = r18059 * r18059;
double r18072 = im;
double r18073 = r18072 * r18072;
double r18074 = r18071 + r18073;
double r18075 = sqrt(r18074);
double r18076 = r18075 - r18059;
double r18077 = r18063 * r18076;
double r18078 = sqrt(r18077);
double r18079 = r18062 * r18078;
double r18080 = -2.3932815010602277e-282;
bool r18081 = r18059 <= r18080;
double r18082 = r18059 + r18072;
double r18083 = -r18082;
double r18084 = r18063 * r18083;
double r18085 = sqrt(r18084);
double r18086 = r18062 * r18085;
double r18087 = 3.315327059634813e-219;
bool r18088 = r18059 <= r18087;
double r18089 = r18082 / r18072;
double r18090 = r18072 / r18089;
double r18091 = r18063 * r18090;
double r18092 = sqrt(r18091);
double r18093 = r18062 * r18092;
double r18094 = 5.301975457738901e+144;
bool r18095 = r18059 <= r18094;
double r18096 = 2.0;
double r18097 = pow(r18072, r18096);
double r18098 = r18063 * r18097;
double r18099 = sqrt(r18098);
double r18100 = r18059 + r18075;
double r18101 = sqrt(r18100);
double r18102 = r18099 / r18101;
double r18103 = r18062 * r18102;
double r18104 = r18096 * r18059;
double r18105 = r18104 / r18072;
double r18106 = r18072 / r18105;
double r18107 = r18063 * r18106;
double r18108 = sqrt(r18107);
double r18109 = r18062 * r18108;
double r18110 = r18095 ? r18103 : r18109;
double r18111 = r18088 ? r18093 : r18110;
double r18112 = r18081 ? r18086 : r18111;
double r18113 = r18070 ? r18079 : r18112;
double r18114 = r18061 ? r18068 : r18113;
return r18114;
}



Bits error versus re



Bits error versus im
Results
if re < -1.5057522058365376e+136Initial program 58.9
Taylor expanded around -inf 9.2
if -1.5057522058365376e+136 < re < -8.861544571423392e-181Initial program 16.1
if -8.861544571423392e-181 < re < -2.3932815010602277e-282Initial program 27.3
rmApplied add-exp-log29.4
rmApplied flip--30.8
Simplified30.8
Simplified28.8
Taylor expanded around -inf 31.8
if -2.3932815010602277e-282 < re < 3.315327059634813e-219Initial program 30.5
rmApplied add-exp-log32.5
rmApplied flip--32.3
Simplified32.3
Simplified30.3
rmApplied unpow230.3
Applied associate-/l*29.3
Taylor expanded around 0 32.2
if 3.315327059634813e-219 < re < 5.301975457738901e+144Initial program 41.5
rmApplied add-exp-log44.5
rmApplied flip--44.4
Simplified31.9
Simplified30.2
rmApplied associate-*r/30.3
Applied sqrt-div29.2
if 5.301975457738901e+144 < re Initial program 63.7
rmApplied add-exp-log63.9
rmApplied flip--63.9
Simplified49.2
Simplified49.1
rmApplied unpow249.1
Applied associate-/l*48.7
Taylor expanded around inf 22.6
Final simplification22.6
herbie shell --seed 2020001
(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)))))