0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\begin{array}{l}
\mathbf{if}\;re \le 5.5410621791018759 \cdot 10^{-79}:\\
\;\;\;\;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 r18502 = 0.5;
double r18503 = 2.0;
double r18504 = re;
double r18505 = r18504 * r18504;
double r18506 = im;
double r18507 = r18506 * r18506;
double r18508 = r18505 + r18507;
double r18509 = sqrt(r18508);
double r18510 = r18509 - r18504;
double r18511 = r18503 * r18510;
double r18512 = sqrt(r18511);
double r18513 = r18502 * r18512;
return r18513;
}
double f(double re, double im) {
double r18514 = re;
double r18515 = 5.541062179101876e-79;
bool r18516 = r18514 <= r18515;
double r18517 = 0.5;
double r18518 = 2.0;
double r18519 = im;
double r18520 = hypot(r18514, r18519);
double r18521 = r18520 - r18514;
double r18522 = 0.0;
double r18523 = r18521 + r18522;
double r18524 = r18518 * r18523;
double r18525 = sqrt(r18524);
double r18526 = r18517 * r18525;
double r18527 = 2.0;
double r18528 = pow(r18519, r18527);
double r18529 = r18528 + r18522;
double r18530 = r18514 + r18520;
double r18531 = r18529 / r18530;
double r18532 = r18518 * r18531;
double r18533 = sqrt(r18532);
double r18534 = r18517 * r18533;
double r18535 = r18516 ? r18526 : r18534;
return r18535;
}



Bits error versus re



Bits error versus im
Results
if re < 5.541062179101876e-79Initial program 32.4
rmApplied add-cube-cbrt32.5
Applied add-sqr-sqrt32.5
Applied sqrt-prod32.6
Applied prod-diff32.6
Simplified3.5
Simplified3.4
if 5.541062179101876e-79 < re Initial program 54.1
rmApplied flip--54.1
Simplified38.8
Simplified31.0
Final simplification12.1
herbie shell --seed 2020039 +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)))))