0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\begin{array}{l}
\mathbf{if}\;re \le 7.84862278851990408 \cdot 10^{68}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(\mathsf{hypot}\left(re, im\right) - re\right) + 0\right)}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{{im}^{2} + 0}{re + \mathsf{hypot}\left(re, im\right)}}\\
\end{array}double f(double re, double im) {
double r20911 = 0.5;
double r20912 = 2.0;
double r20913 = re;
double r20914 = r20913 * r20913;
double r20915 = im;
double r20916 = r20915 * r20915;
double r20917 = r20914 + r20916;
double r20918 = sqrt(r20917);
double r20919 = r20918 - r20913;
double r20920 = r20912 * r20919;
double r20921 = sqrt(r20920);
double r20922 = r20911 * r20921;
return r20922;
}
double f(double re, double im) {
double r20923 = re;
double r20924 = 7.848622788519904e+68;
bool r20925 = r20923 <= r20924;
double r20926 = 0.5;
double r20927 = 2.0;
double r20928 = im;
double r20929 = hypot(r20923, r20928);
double r20930 = r20929 - r20923;
double r20931 = 0.0;
double r20932 = r20930 + r20931;
double r20933 = r20927 * r20932;
double r20934 = sqrt(r20933);
double r20935 = r20926 * r20934;
double r20936 = 2.0;
double r20937 = pow(r20928, r20936);
double r20938 = r20937 + r20931;
double r20939 = r20923 + r20929;
double r20940 = r20938 / r20939;
double r20941 = r20927 * r20940;
double r20942 = sqrt(r20941);
double r20943 = r20926 * r20942;
double r20944 = r20925 ? r20935 : r20943;
return r20944;
}



Bits error versus re



Bits error versus im
Results
if re < 7.848622788519904e+68Initial program 33.3
rmApplied add-cube-cbrt33.5
Applied add-sqr-sqrt33.5
Applied sqrt-prod33.6
Applied prod-diff33.6
Simplified6.7
Simplified6.5
if 7.848622788519904e+68 < re Initial program 59.6
rmApplied flip--59.6
Simplified43.5
Simplified30.9
Final simplification11.2
herbie shell --seed 2020056 +o rules:numerics
(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)))))