0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\begin{array}{l}
\mathbf{if}\;re \le 3.12660658242813301 \cdot 10^{130}:\\
\;\;\;\;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 r21354 = 0.5;
double r21355 = 2.0;
double r21356 = re;
double r21357 = r21356 * r21356;
double r21358 = im;
double r21359 = r21358 * r21358;
double r21360 = r21357 + r21359;
double r21361 = sqrt(r21360);
double r21362 = r21361 - r21356;
double r21363 = r21355 * r21362;
double r21364 = sqrt(r21363);
double r21365 = r21354 * r21364;
return r21365;
}
double f(double re, double im) {
double r21366 = re;
double r21367 = 3.126606582428133e+130;
bool r21368 = r21366 <= r21367;
double r21369 = 0.5;
double r21370 = 2.0;
double r21371 = im;
double r21372 = hypot(r21366, r21371);
double r21373 = r21372 - r21366;
double r21374 = 0.0;
double r21375 = r21373 + r21374;
double r21376 = r21370 * r21375;
double r21377 = sqrt(r21376);
double r21378 = r21369 * r21377;
double r21379 = 2.0;
double r21380 = pow(r21371, r21379);
double r21381 = r21380 + r21374;
double r21382 = r21366 + r21372;
double r21383 = r21381 / r21382;
double r21384 = r21370 * r21383;
double r21385 = sqrt(r21384);
double r21386 = r21369 * r21385;
double r21387 = r21368 ? r21378 : r21386;
return r21387;
}



Bits error versus re



Bits error versus im
Results
if re < 3.126606582428133e+130Initial program 35.0
rmApplied add-cube-cbrt35.5
Applied add-sqr-sqrt35.5
Applied sqrt-prod35.6
Applied prod-diff35.6
Simplified8.7
Simplified8.3
if 3.126606582428133e+130 < re Initial program 62.0
rmApplied flip--62.0
Simplified48.0
Simplified30.2
Final simplification11.5
herbie shell --seed 2020047 +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)))))