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}^{1}}{\frac{im + re}{im}}}\\
\mathbf{elif}\;re \le 5.30197545773890109445152581959315448388 \cdot 10^{144}:\\
\;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot {im}^{2}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{{im}^{1}}{\frac{re + re}{im}}}\\
\end{array}double f(double re, double im) {
double r18410 = 0.5;
double r18411 = 2.0;
double r18412 = re;
double r18413 = r18412 * r18412;
double r18414 = im;
double r18415 = r18414 * r18414;
double r18416 = r18413 + r18415;
double r18417 = sqrt(r18416);
double r18418 = r18417 - r18412;
double r18419 = r18411 * r18418;
double r18420 = sqrt(r18419);
double r18421 = r18410 * r18420;
return r18421;
}
double f(double re, double im) {
double r18422 = re;
double r18423 = -1.5057522058365376e+136;
bool r18424 = r18422 <= r18423;
double r18425 = 0.5;
double r18426 = 2.0;
double r18427 = -2.0;
double r18428 = r18427 * r18422;
double r18429 = r18426 * r18428;
double r18430 = sqrt(r18429);
double r18431 = r18425 * r18430;
double r18432 = -8.861544571423392e-181;
bool r18433 = r18422 <= r18432;
double r18434 = r18422 * r18422;
double r18435 = im;
double r18436 = r18435 * r18435;
double r18437 = r18434 + r18436;
double r18438 = sqrt(r18437);
double r18439 = r18438 - r18422;
double r18440 = r18426 * r18439;
double r18441 = sqrt(r18440);
double r18442 = r18425 * r18441;
double r18443 = -2.3932815010602277e-282;
bool r18444 = r18422 <= r18443;
double r18445 = r18422 + r18435;
double r18446 = -r18445;
double r18447 = r18426 * r18446;
double r18448 = sqrt(r18447);
double r18449 = r18425 * r18448;
double r18450 = 3.315327059634813e-219;
bool r18451 = r18422 <= r18450;
double r18452 = 1.0;
double r18453 = pow(r18435, r18452);
double r18454 = r18435 + r18422;
double r18455 = r18454 / r18435;
double r18456 = r18453 / r18455;
double r18457 = r18426 * r18456;
double r18458 = sqrt(r18457);
double r18459 = r18425 * r18458;
double r18460 = 5.301975457738901e+144;
bool r18461 = r18422 <= r18460;
double r18462 = 2.0;
double r18463 = pow(r18435, r18462);
double r18464 = r18426 * r18463;
double r18465 = sqrt(r18464);
double r18466 = r18438 + r18422;
double r18467 = sqrt(r18466);
double r18468 = r18465 / r18467;
double r18469 = r18425 * r18468;
double r18470 = r18422 + r18422;
double r18471 = r18470 / r18435;
double r18472 = r18453 / r18471;
double r18473 = r18426 * r18472;
double r18474 = sqrt(r18473);
double r18475 = r18425 * r18474;
double r18476 = r18461 ? r18469 : r18475;
double r18477 = r18451 ? r18459 : r18476;
double r18478 = r18444 ? r18449 : r18477;
double r18479 = r18433 ? r18442 : r18478;
double r18480 = r18424 ? r18431 : r18479;
return r18480;
}



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 flip--28.8
Simplified28.8
Taylor expanded around -inf 31.8
if -2.3932815010602277e-282 < re < 3.315327059634813e-219Initial program 30.5
rmApplied flip--30.3
Simplified30.3
rmApplied sqr-pow30.3
Applied associate-/l*29.3
Simplified29.3
Taylor expanded around 0 32.2
if 3.315327059634813e-219 < re < 5.301975457738901e+144Initial program 41.5
rmApplied flip--41.5
Simplified30.2
rmApplied associate-*r/30.3
Applied sqrt-div29.2
if 5.301975457738901e+144 < re Initial program 63.7
rmApplied flip--63.7
Simplified49.1
rmApplied sqr-pow49.1
Applied associate-/l*48.7
Simplified48.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)))))