0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\begin{array}{l}
\mathbf{if}\;re \le -2.327249381423175 \cdot 10^{+109}:\\
\;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\
\mathbf{elif}\;re \le -3.4252119942142297 \cdot 10^{-274}:\\
\;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}\\
\mathbf{elif}\;re \le 8.662274821086832 \cdot 10^{-253}:\\
\;\;\;\;0.5 \cdot \sqrt{\left(im + re\right) \cdot \left(-2.0\right)}\\
\mathbf{elif}\;re \le 9.360599483700231 \cdot 10^{+128}:\\
\;\;\;\;0.5 \cdot \sqrt{\left(\frac{\left|im\right|}{\sqrt{im \cdot im + re \cdot re} + re} \cdot \left|im\right|\right) \cdot 2.0}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{\left(im \cdot im\right) \cdot 2.0}}{\sqrt{re + re}} \cdot 0.5\\
\end{array}double f(double re, double im) {
double r420671 = 0.5;
double r420672 = 2.0;
double r420673 = re;
double r420674 = r420673 * r420673;
double r420675 = im;
double r420676 = r420675 * r420675;
double r420677 = r420674 + r420676;
double r420678 = sqrt(r420677);
double r420679 = r420678 - r420673;
double r420680 = r420672 * r420679;
double r420681 = sqrt(r420680);
double r420682 = r420671 * r420681;
return r420682;
}
double f(double re, double im) {
double r420683 = re;
double r420684 = -2.327249381423175e+109;
bool r420685 = r420683 <= r420684;
double r420686 = -2.0;
double r420687 = r420686 * r420683;
double r420688 = 2.0;
double r420689 = r420687 * r420688;
double r420690 = sqrt(r420689);
double r420691 = 0.5;
double r420692 = r420690 * r420691;
double r420693 = -3.4252119942142297e-274;
bool r420694 = r420683 <= r420693;
double r420695 = im;
double r420696 = r420695 * r420695;
double r420697 = r420683 * r420683;
double r420698 = r420696 + r420697;
double r420699 = sqrt(r420698);
double r420700 = r420699 - r420683;
double r420701 = r420688 * r420700;
double r420702 = sqrt(r420701);
double r420703 = r420691 * r420702;
double r420704 = 8.662274821086832e-253;
bool r420705 = r420683 <= r420704;
double r420706 = r420695 + r420683;
double r420707 = -r420688;
double r420708 = r420706 * r420707;
double r420709 = sqrt(r420708);
double r420710 = r420691 * r420709;
double r420711 = 9.360599483700231e+128;
bool r420712 = r420683 <= r420711;
double r420713 = fabs(r420695);
double r420714 = r420699 + r420683;
double r420715 = r420713 / r420714;
double r420716 = r420715 * r420713;
double r420717 = r420716 * r420688;
double r420718 = sqrt(r420717);
double r420719 = r420691 * r420718;
double r420720 = r420696 * r420688;
double r420721 = sqrt(r420720);
double r420722 = r420683 + r420683;
double r420723 = sqrt(r420722);
double r420724 = r420721 / r420723;
double r420725 = r420724 * r420691;
double r420726 = r420712 ? r420719 : r420725;
double r420727 = r420705 ? r420710 : r420726;
double r420728 = r420694 ? r420703 : r420727;
double r420729 = r420685 ? r420692 : r420728;
return r420729;
}



Bits error versus re



Bits error versus im
Results
if re < -2.327249381423175e+109Initial program 51.2
rmApplied add-cube-cbrt51.2
Taylor expanded around -inf 10.4
if -2.327249381423175e+109 < re < -3.4252119942142297e-274Initial program 19.4
if -3.4252119942142297e-274 < re < 8.662274821086832e-253Initial program 31.9
rmApplied add-cube-cbrt32.3
rmApplied flip--32.6
Simplified32.6
Simplified32.2
Taylor expanded around -inf 31.0
if 8.662274821086832e-253 < re < 9.360599483700231e+128Initial program 39.2
rmApplied add-cube-cbrt40.7
rmApplied flip--40.6
Simplified30.1
Simplified29.8
rmApplied *-un-lft-identity29.8
Applied *-un-lft-identity29.8
Applied distribute-lft-out29.8
Applied add-sqr-sqrt29.8
Applied times-frac29.8
Simplified29.7
Simplified28.2
if 9.360599483700231e+128 < re Initial program 60.7
rmApplied add-cube-cbrt61.8
rmApplied flip--61.8
Simplified47.6
Simplified47.6
rmApplied associate-*r/47.6
Applied sqrt-div46.2
Simplified46.2
Taylor expanded around inf 22.1
Final simplification21.9
herbie shell --seed 2019149
(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)))))