0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\begin{array}{l}
\mathbf{if}\;re \le -4.544356418821128 \cdot 10^{+64}:\\
\;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\
\mathbf{elif}\;re \le -1.2465139226076545 \cdot 10^{-304}:\\
\;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}\\
\mathbf{elif}\;re \le 8.828385981385365 \cdot 10^{-228}:\\
\;\;\;\;0.5 \cdot \sqrt{\left(im - re\right) \cdot 2.0}\\
\mathbf{elif}\;re \le 7.387383225171874 \cdot 10^{+137}:\\
\;\;\;\;0.5 \cdot \left(\frac{\left|im\right| \cdot \sqrt[3]{\sqrt{2.0}}}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}} \cdot \left(\sqrt[3]{\sqrt{2.0}} \cdot \sqrt[3]{\sqrt{2.0}}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(\frac{\sqrt[3]{\sqrt{2.0}} \cdot \sqrt[3]{\sqrt{2.0}}}{\sqrt{re + re}} \cdot \left(\left|im\right| \cdot \sqrt[3]{\sqrt{2.0}}\right)\right)\\
\end{array}double f(double re, double im) {
double r572543 = 0.5;
double r572544 = 2.0;
double r572545 = re;
double r572546 = r572545 * r572545;
double r572547 = im;
double r572548 = r572547 * r572547;
double r572549 = r572546 + r572548;
double r572550 = sqrt(r572549);
double r572551 = r572550 - r572545;
double r572552 = r572544 * r572551;
double r572553 = sqrt(r572552);
double r572554 = r572543 * r572553;
return r572554;
}
double f(double re, double im) {
double r572555 = re;
double r572556 = -4.544356418821128e+64;
bool r572557 = r572555 <= r572556;
double r572558 = -2.0;
double r572559 = r572558 * r572555;
double r572560 = 2.0;
double r572561 = r572559 * r572560;
double r572562 = sqrt(r572561);
double r572563 = 0.5;
double r572564 = r572562 * r572563;
double r572565 = -1.2465139226076545e-304;
bool r572566 = r572555 <= r572565;
double r572567 = im;
double r572568 = r572567 * r572567;
double r572569 = r572555 * r572555;
double r572570 = r572568 + r572569;
double r572571 = sqrt(r572570);
double r572572 = r572571 - r572555;
double r572573 = r572560 * r572572;
double r572574 = sqrt(r572573);
double r572575 = r572563 * r572574;
double r572576 = 8.828385981385365e-228;
bool r572577 = r572555 <= r572576;
double r572578 = r572567 - r572555;
double r572579 = r572578 * r572560;
double r572580 = sqrt(r572579);
double r572581 = r572563 * r572580;
double r572582 = 7.387383225171874e+137;
bool r572583 = r572555 <= r572582;
double r572584 = fabs(r572567);
double r572585 = sqrt(r572560);
double r572586 = cbrt(r572585);
double r572587 = r572584 * r572586;
double r572588 = r572555 + r572571;
double r572589 = sqrt(r572588);
double r572590 = r572587 / r572589;
double r572591 = r572586 * r572586;
double r572592 = r572590 * r572591;
double r572593 = r572563 * r572592;
double r572594 = r572555 + r572555;
double r572595 = sqrt(r572594);
double r572596 = r572591 / r572595;
double r572597 = r572596 * r572587;
double r572598 = r572563 * r572597;
double r572599 = r572583 ? r572593 : r572598;
double r572600 = r572577 ? r572581 : r572599;
double r572601 = r572566 ? r572575 : r572600;
double r572602 = r572557 ? r572564 : r572601;
return r572602;
}



Bits error versus re



Bits error versus im
Results
if re < -4.544356418821128e+64Initial program 44.9
Taylor expanded around -inf 12.0
if -4.544356418821128e+64 < re < -1.2465139226076545e-304Initial program 19.6
if -1.2465139226076545e-304 < re < 8.828385981385365e-228Initial program 32.9
Taylor expanded around 0 33.6
if 8.828385981385365e-228 < re < 7.387383225171874e+137Initial program 42.2
rmApplied flip--42.2
Applied associate-*r/42.2
Applied sqrt-div42.3
Simplified30.2
rmApplied sqrt-prod30.2
Applied associate-/l*30.2
Simplified19.6
rmApplied div-inv19.7
Applied add-cube-cbrt19.7
Applied times-frac19.5
Simplified19.4
rmApplied div-inv19.5
Applied associate-*l*19.4
Simplified19.4
if 7.387383225171874e+137 < re Initial program 61.9
rmApplied flip--61.9
Applied associate-*r/61.9
Applied sqrt-div61.9
Simplified48.6
rmApplied sqrt-prod48.6
Applied associate-/l*48.6
Simplified48.3
rmApplied div-inv48.3
Applied add-cube-cbrt48.3
Applied times-frac48.3
Simplified48.3
Taylor expanded around inf 9.4
Final simplification17.6
herbie shell --seed 2019143
(FPCore (re im)
:name "math.sqrt on complex, imaginary part, im greater than 0 branch"
(* 0.5 (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re)))))