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(-1 \cdot re - 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{2 \cdot re}{im}}}\\
\end{array}double f(double re, double im) {
double r18439 = 0.5;
double r18440 = 2.0;
double r18441 = re;
double r18442 = r18441 * r18441;
double r18443 = im;
double r18444 = r18443 * r18443;
double r18445 = r18442 + r18444;
double r18446 = sqrt(r18445);
double r18447 = r18446 - r18441;
double r18448 = r18440 * r18447;
double r18449 = sqrt(r18448);
double r18450 = r18439 * r18449;
return r18450;
}
double f(double re, double im) {
double r18451 = re;
double r18452 = -1.5057522058365376e+136;
bool r18453 = r18451 <= r18452;
double r18454 = 0.5;
double r18455 = 2.0;
double r18456 = -1.0;
double r18457 = r18456 * r18451;
double r18458 = r18457 - r18451;
double r18459 = r18455 * r18458;
double r18460 = sqrt(r18459);
double r18461 = r18454 * r18460;
double r18462 = -8.861544571423392e-181;
bool r18463 = r18451 <= r18462;
double r18464 = r18451 * r18451;
double r18465 = im;
double r18466 = r18465 * r18465;
double r18467 = r18464 + r18466;
double r18468 = sqrt(r18467);
double r18469 = r18468 - r18451;
double r18470 = r18455 * r18469;
double r18471 = sqrt(r18470);
double r18472 = r18454 * r18471;
double r18473 = -2.3932815010602277e-282;
bool r18474 = r18451 <= r18473;
double r18475 = r18451 + r18465;
double r18476 = -r18475;
double r18477 = r18455 * r18476;
double r18478 = sqrt(r18477);
double r18479 = r18454 * r18478;
double r18480 = 3.315327059634813e-219;
bool r18481 = r18451 <= r18480;
double r18482 = 1.0;
double r18483 = pow(r18465, r18482);
double r18484 = r18465 + r18451;
double r18485 = r18484 / r18465;
double r18486 = r18483 / r18485;
double r18487 = r18455 * r18486;
double r18488 = sqrt(r18487);
double r18489 = r18454 * r18488;
double r18490 = 5.301975457738901e+144;
bool r18491 = r18451 <= r18490;
double r18492 = 2.0;
double r18493 = pow(r18465, r18492);
double r18494 = r18455 * r18493;
double r18495 = sqrt(r18494);
double r18496 = r18468 + r18451;
double r18497 = sqrt(r18496);
double r18498 = r18495 / r18497;
double r18499 = r18454 * r18498;
double r18500 = r18492 * r18451;
double r18501 = r18500 / r18465;
double r18502 = r18483 / r18501;
double r18503 = r18455 * r18502;
double r18504 = sqrt(r18503);
double r18505 = r18454 * r18504;
double r18506 = r18491 ? r18499 : r18505;
double r18507 = r18481 ? r18489 : r18506;
double r18508 = r18474 ? r18479 : r18507;
double r18509 = r18463 ? r18472 : r18508;
double r18510 = r18453 ? r18461 : r18509;
return r18510;
}



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)))))